Skip to main content
Prerequisite You need administrative access to your Growi dashboard to configure webhook URLs.

Overview

When a brand has a Webhook URL configured, Growi will send an HTTP POST request with a JSON body whenever a campaign’s creator affiliation changes state.

Configuration

In the Organization settings, configure:
  • Webhook URL: A single HTTPS URL that will receive webhook POST requests.

Event Types

The webhook payload includes an event field to differentiate between actions:
EventDescription
campaign_affiliate.activatedCreator was added/activated on the campaign
campaign_affiliate.removedCreator was removed from the campaign
campaign_affiliate.leftCreator left the campaign
If the system encounters an unknown status, it will fall back to campaign_affiliate.<status>.

Delivery Details

SettingValue
MethodPOST
Content-Typeapplication/json
Connect Timeout10 seconds
Read Timeout10 seconds
Success CriteriaAny 2xx response
RetriesUp to 3 retries on failure
Non-2xx responses are treated as failures and will be retried.

Payload Format

The request body is a single JSON object with the following fields:
event
string
required
Event name that indicates what happened.
occurred_at
string
required
ISO-8601 timestamp of the underlying record update.
campaign_affiliate_id
integer
required
Internal ID of the campaign-creator association record.
campaign_id
integer
required
Campaign ID.
organization_id
integer
required
Organization ID.
user_id
integer
required
Creator’s user ID.
status
string
required
The raw status value on the record (e.g., active, removed, left).
campaign_name
string
Campaign name, when available.
organization_slug
string
Brand slug, when available.
user_email
string
Creator email, when available.
user_name
string
Creator name, when available.
tag
string
Default affiliate tag for the creator on this campaign, when available.
Optional fields are omitted when values are not present. The occurred_at field uses the campaign affiliation record’s updated_at timestamp.

Example Payloads

Creator Added to Campaign

{
  "event": "campaign_affiliate.activated",
  "occurred_at": "2026-02-27T18:33:12-05:00",
  "campaign_affiliate_id": 123,
  "campaign_id": 456,
  "organization_id": 789,
  "user_id": 42,
  "status": "active",
  "campaign_name": "Spring Promo",
  "organization_slug": "acme",
  "user_email": "creator@example.com",
  "user_name": "Creator Name",
  "tag": "creator-default-tag"
}

Creator Removed from Campaign

{
  "event": "campaign_affiliate.removed",
  "occurred_at": "2026-02-27T18:35:02-05:00",
  "campaign_affiliate_id": 123,
  "campaign_id": 456,
  "organization_id": 789,
  "user_id": 42,
  "status": "removed"
}

Troubleshooting

Ensure your webhook URL is correctly configured in Organization settings and is publicly accessible over HTTPS.
Implement idempotency in your webhook handler using the campaign_affiliate_id and occurred_at fields to deduplicate events.
Your endpoint must respond within 10 seconds. Consider processing webhooks asynchronously and returning a 200 response immediately.