Developer Docs
Developer Docs

Integrate Chat33
with your stack.

Tracking pixel, webhook events, MMP install postbacks, and revenue tracking. Everything you need to connect Chat33 to your website or app.

Getting Started

To use the Chat33 developer integrations, you need an MMP Token. Find it in your dashboard at Settings → Integrations.

1. Get your token

Go to Settings → Integrations → MMP Token. Click "Generate Token" if you don't have one.

2. Choose your integration

Website / Web App

Use the Tracking Pixel to track page views, signups, and purchases.

Mobile App

Use MMP Postbacks (AppsFlyer, Adjust, Tenjin, Singular) to track installs.

Tracking Pixel

Track website events and attribute them to DM conversations

Installation

Add this script tag to your website's <head> or before </body>. Replace YOUR_TOKEN with your MMP token.

html
<script src="https://chat33.io/pixel.js" data-token="YOUR_TOKEN"></script>

Track Events

The pixel auto-tracks page views. To track custom events (purchases, signups, etc.), use the chat33.track() method:

javascript
// Track a purchase with value
chat33.track("purchase", {
  value: 49.99,
  currency: "USD",
  product: "Pro Plan"
});

// Track a signup
chat33.track("signup");

// Track a lead
chat33.track("lead", { source: "landing_page" });

// Track any custom event
chat33.track("tutorial_complete", { step: 5 });

How it works

Smart Links

Chat33 appends ?cid=xxx to tracked links in DMs

Auto-Attribution

The pixel reads the contact ID from the URL and persists it across pages

Auto-Tagging

Events like 'purchase' automatically tag the contact in your CRM

API Reference

MethodParametersDescription
chat33.track(event, metadata?)event: string, metadata: objectSend a custom event
chat33.identify(contactId)contactId: stringManually set the contact ID
chat33.getContactId()Returns the current contact ID

Webhook Events API

Send custom events from your server to Chat33

Endpoint

http
POST https://chat33.io/api/webhooks/events?token=YOUR_TOKEN

Content-Type: application/json

{
  "event": "purchase",
  "contactId": "cm1abc123...",
  "value": 49.99,
  "currency": "USD",
  "metadata": {
    "product": "Pro Plan",
    "source": "checkout"
  }
}

Request Body

FieldTypeRequiredDescription
eventstringYesEvent name (purchase, signup, lead, etc.)
contactIdstringNoChat33 contact ID for attribution
valuenumberNoMonetary value of the event
currencystringNoCurrency code (USD, EUR, etc.)
metadataobjectNoAny additional data

Examples

bash
# cURL
curl -X POST "https://chat33.io/api/webhooks/events?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"event":"purchase","value":29.99,"currency":"USD"}'
javascript
// Node.js / fetch
await fetch("https://chat33.io/api/webhooks/events?token=YOUR_TOKEN", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    event: "purchase",
    contactId: "cm1abc123...",
    value: 29.99,
    currency: "USD",
  }),
});

Rate limit: 100 events per minute per token. Events are stored as analytics events and contacts are automatically tagged based on event names (e.g., "purchase" → "Purchased" tag).

Social Posting API

Schedule and publish content to Instagram, Facebook, TikTok, YouTube, and X (Twitter)

Authentication

Generate an API key in Settings → API Keys. Include it as the x-api-key header in all requests.

bash
# All API requests require this header:
x-api-key: sk_live_your_api_key_here

Supported Platforms

Instagram

Photos, reels, carousels (via IG Graph API)

Facebook

Text, photos, videos with native scheduling

TikTok

Videos and photo posts via Content Posting API

YouTube

Video uploads with native scheduled publishing

Create a Post

bash
curl -X POST "https://chat33.io/api/v1/posts" \
  -H "x-api-key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "accountIds": ["channel_id_here"],
    "text": "Check out our new product! #launch",
    "mediaUrls": ["https://your-blob-url.com/image.jpg"],
    "mediaType": "image"
  }'

Schedule a Post

bash
curl -X POST "https://chat33.io/api/v1/posts" \
  -H "x-api-key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "accountIds": ["ig_channel_id", "fb_channel_id"],
    "text": "Coming soon!",
    "mediaUrls": ["https://your-blob-url.com/video.mp4"],
    "mediaType": "video",
    "scheduledAt": "2026-04-15T14:00:00Z",
    "callbackUrl": "https://your-server.com/webhook"
  }'

Upload Media

Upload media files before creating posts. Supports files up to 4.5MB via multipart, or any size via URL ingestion.

bash
# Small files (< 4.5MB) — multipart upload
curl -X POST "https://chat33.io/api/v1/media/upload" \
  -H "x-api-key: sk_live_your_key" \
  -F "file=@photo.jpg"

# Large files — URL ingestion (any size)
curl -X POST "https://chat33.io/api/v1/media/upload" \
  -H "x-api-key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/large-video.mp4", "filename": "video.mp4"}'

API Reference

MethodEndpointDescription
POST
/api/v1/postsCreate & queue post(s)
GET
/api/v1/postsList posts (paginated, filterable)
GET
/api/v1/posts/:idGet post details
PATCH
/api/v1/posts/:idEdit draft/queued post or cancel
DELETE
/api/v1/posts/:idDelete draft or cancel post
POST
/api/v1/posts/:id/duplicateClone a post
POST
/api/v1/media/uploadUpload media (file or URL)

Request Body: Create Post

FieldTypeRequiredDescription
accountIdsstring[]YesChannel IDs to post to (max 10)
textstringNoPost caption / description
mediaUrlsstring[]NoURLs to media files (uploaded via /media/upload)
mediaTypestringNoimage, video, reel, or carousel
scheduledAtstringNoISO 8601 datetime for scheduling
callbackUrlstringNoWebhook URL for publish notifications
platformConfigobjectNoPlatform-specific options (YouTube title, privacy, etc.)
coverImageUrlstringNoCover/thumbnail image for videos

Rate limits: 30 posts per hour per organization. Per-channel daily limits: Instagram (25), Facebook (50), TikTok (20), YouTube (6), X (300).

Callbacks: When a post is published or fails, a POST request is sent to your callbackUrl with the post ID, status, and external post URL.

OpenAPI 3.1 Spec

Interactive endpoint explorer + machine-readable JSON for codegen, n8n, MCP.

AI Docs · llms.txt

Markdown docs for Claude, ChatGPT, Cursor. Copy + paste so AI generates correct API calls.

MMP Install Postbacks

Track app installs from AppsFlyer, Adjust, Tenjin, or Singular

Postback URL

Configure this URL in your MMP dashboard as a postback endpoint. Replace YOUR_SECRET with your MMP Webhook Secret from Settings.

text
https://chat33.io/api/webhooks/mmp?secret=YOUR_SECRET

Supported MMPs

AppsFlyer

Reads event_type, app_id, appsflyer_id, af_sub1/af_sub2 for attribution

Adjust

Reads activity_kind, tracker_name, label for attribution

Tenjin

Reads campaign_id, site_id for attribution

Singular

Reads network, source for attribution

Smart Link Setup

Use the Smart Link node in your flows to generate download links. Chat33 automatically embeds the contact ID and influencer ID in the link parameters, so installs are attributed back to the DM conversation and campaign.

1

Add Smart Link node

In your flow, add a Smart Link node with your App Store / Google Play URLs

2

Configure MMP

Set up the postback URL in AppsFlyer/Adjust/Tenjin/Singular

3

Track installs

Installs are attributed to contacts and campaigns automatically

UTM Campaign Link Builder

Generate tracked URLs with UTM parameters for Google Analytics

Tip: Use UTM links in your Chat33 flow messages. When combined with the tracking pixel, you'll see the full journey from DM to conversion in Google Analytics.

Need help integrating?

Our team can help you set up tracking and get the most out of Chat33's developer tools.