> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mailglyph.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaigns

> Create, send, test, and analyze campaigns with the MailGlyph PHP SDK.

Use a **secret key** client for campaign methods.

```php theme={null}
<?php

use MailGlyph\MailGlyph;

$client = new MailGlyph($_ENV['MAILGLYPH_SECRET_KEY']);
```

## List campaigns (`campaigns->list`)

```php theme={null}
<?php

$page = $client->campaigns->list([
    'page' => 1,
    'pageSize' => 20,
    'status' => 'DRAFT',
]);

echo $page['total'] . PHP_EOL;
echo $page['totalPages'] . PHP_EOL;
echo count($page['data']) . PHP_EOL;
```

## Create a campaign (`campaigns->create`)

### Audience: all contacts

```php theme={null}
<?php

$campaignAll = $client->campaigns->create([
    'name' => 'Launch campaign',
    'subject' => 'Introducing our new feature',
    'body' => '<h1>Big news</h1><p>Check out what is new.</p>',
    'from' => 'hello@your-verified-domain.com',
    'audienceType' => 'ALL',
]);

echo $campaignAll->id . PHP_EOL;
echo $campaignAll->status . PHP_EOL;
```

### Audience: filtered contacts

```php theme={null}
<?php

$campaignFiltered = $client->campaigns->create([
    'name' => 'Subscribed users campaign',
    'subject' => 'Feature update',
    'body' => '<p>Only subscribed users receive this.</p>',
    'from' => 'hello@your-verified-domain.com',
    'audienceType' => 'FILTERED',
    'audienceCondition' => [
        'logic' => 'AND',
        'groups' => [
            [
                'filters' => [
                    ['field' => 'subscribed', 'operator' => 'equals', 'value' => true],
                ],
            ],
        ],
    ],
]);

echo $campaignFiltered->id . PHP_EOL;
```

### Audience: segment

```php theme={null}
<?php

$campaignSegment = $client->campaigns->create([
    'name' => 'Segment campaign',
    'subject' => 'Offer for premium users',
    'body' => '<p>This goes to one saved segment.</p>',
    'from' => 'hello@your-verified-domain.com',
    'audienceType' => 'SEGMENT',
    'segmentId' => 'seg_123',
]);

echo $campaignSegment->id . PHP_EOL;
```

## Get one campaign (`campaigns->get`)

```php theme={null}
<?php

$campaign = $client->campaigns->get($campaignAll->id);

echo $campaign->name . PHP_EOL;
echo $campaign->status . PHP_EOL;
```

## Update a campaign (`campaigns->update`)

```php theme={null}
<?php

$updated = $client->campaigns->update($campaignAll->id, [
    'subject' => 'Updated subject line',
    'replyTo' => 'support@your-verified-domain.com',
]);

echo $updated->subject . PHP_EOL;
echo $updated->replyTo . PHP_EOL;
```

## Send a campaign now (`campaigns->send`)

```php theme={null}
<?php

$sendResult = $client->campaigns->send($campaignAll->id);

var_dump($sendResult['success']);
echo $sendResult['message'] . PHP_EOL;
```

## Schedule a campaign (`campaigns->send` with `scheduledFor`)

```php theme={null}
<?php

$scheduledResult = $client->campaigns->send($campaignAll->id, [
    'scheduledFor' => '2026-03-01T10:00:00Z',
]);

var_dump($scheduledResult['success']);
echo $scheduledResult['message'] . PHP_EOL;
```

## Send a test email (`campaigns->test`)

```php theme={null}
<?php

$client->campaigns->test($campaignAll->id, 'preview@example.com');
```

## Fetch campaign stats (`campaigns->stats`)

```php theme={null}
<?php

$stats = $client->campaigns->stats($campaignAll->id);

echo $stats['sent'] . PHP_EOL;
echo $stats['opened'] . PHP_EOL;
```

## Cancel a scheduled campaign (`campaigns->cancel`)

```php theme={null}
<?php

$cancelled = $client->campaigns->cancel($campaignAll->id);

echo $cancelled->status . PHP_EOL;
```

See full details in the [Campaigns API reference](https://docs.mailglyph.com/api-reference/campaigns/listCampaigns.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.