Skip to main content
Use a secret key client for campaign methods.
<?php

use Mailrify\Mailrify;

$client = new Mailrify($_ENV['MAILRIFY_SECRET_KEY']);

List campaigns (campaigns->list)

<?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

$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' => '[email protected]',
    'audienceType' => 'ALL',
]);

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

Audience: filtered contacts

<?php

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

echo $campaignFiltered->id . PHP_EOL;

Audience: segment

<?php

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

echo $campaignSegment->id . PHP_EOL;

Get one campaign (campaigns->get)

<?php

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

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

Update a campaign (campaigns->update)

<?php

$updated = $client->campaigns->update($campaignAll->id, [
    'subject' => 'Updated subject line',
    'replyTo' => '[email protected]',
]);

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

Send a campaign now (campaigns->send)

<?php

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

Schedule a campaign (campaigns->send with scheduledFor)

<?php

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

Send a test email (campaigns->test)

<?php

$client->campaigns->test($campaignAll->id, '[email protected]');

Fetch campaign stats (campaigns->stats)

<?php

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

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

Cancel a scheduled campaign (campaigns->cancel)

<?php

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

echo $cancelled->status . PHP_EOL;
See full details in the Campaigns API reference.