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.
<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:
// 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
| Method | Parameters | Description |
|---|---|---|
| chat33.track(event, metadata?) | event: string, metadata: object | Send a custom event |
| chat33.identify(contactId) | contactId: string | Manually set the contact ID |
| chat33.getContactId() | — | Returns the current contact ID |
Webhook Events API
Send custom events from your server to Chat33
Endpoint
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
| Field | Type | Required | Description |
|---|---|---|---|
| event | string | Yes | Event name (purchase, signup, lead, etc.) |
| contactId | string | No | Chat33 contact ID for attribution |
| value | number | No | Monetary value of the event |
| currency | string | No | Currency code (USD, EUR, etc.) |
| metadata | object | No | Any additional data |
Examples
# 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"}'// 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.
# All API requests require this header:
x-api-key: sk_live_your_api_key_hereSupported Platforms
Photos, reels, carousels (via IG Graph API)
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
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
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.
# 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
| Method | Endpoint | Description |
|---|---|---|
POST | /api/v1/posts | Create & queue post(s) |
GET | /api/v1/posts | List posts (paginated, filterable) |
GET | /api/v1/posts/:id | Get post details |
PATCH | /api/v1/posts/:id | Edit draft/queued post or cancel |
DELETE | /api/v1/posts/:id | Delete draft or cancel post |
POST | /api/v1/posts/:id/duplicate | Clone a post |
POST | /api/v1/media/upload | Upload media (file or URL) |
Request Body: Create Post
| Field | Type | Required | Description |
|---|---|---|---|
| accountIds | string[] | Yes | Channel IDs to post to (max 10) |
| text | string | No | Post caption / description |
| mediaUrls | string[] | No | URLs to media files (uploaded via /media/upload) |
| mediaType | string | No | image, video, reel, or carousel |
| scheduledAt | string | No | ISO 8601 datetime for scheduling |
| callbackUrl | string | No | Webhook URL for publish notifications |
| platformConfig | object | No | Platform-specific options (YouTube title, privacy, etc.) |
| coverImageUrl | string | No | Cover/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.
https://chat33.io/api/webhooks/mmp?secret=YOUR_SECRETSupported 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.
Add Smart Link node
In your flow, add a Smart Link node with your App Store / Google Play URLs
Configure MMP
Set up the postback URL in AppsFlyer/Adjust/Tenjin/Singular
Track installs
Installs are attributed to contacts and campaigns automatically
Link Tracking
Track clicks on links sent through DM automations
How it works
When you use tracked links in your flows, Chat33 wraps them in a redirect URL that records the click before forwarding to the destination. The contact ID is appended as a query parameter so downstream pages can identify the visitor.
# Original URL in your flow:
https://yoursite.com/signup
# What gets sent to the user:
https://chat33.io/api/t?url=https://yoursite.com/signup&cid=cm1abc...&fid=flow123
# User is redirected to:
https://yoursite.com/signup?cid=cm1abc...&fid=flow123URL Parameters Appended
| Parameter | Description |
|---|---|
| cid | Chat33 contact ID |
| fid | Flow ID that generated the link |
| ch | Channel ID |
Tip: Combine link tracking with the tracking pixel. When a user clicks a tracked link and lands on your site, the pixel automatically reads the cid parameter and attributes all subsequent events to that contact.
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.
App Store Campaign Links
Generate tracked download links for Apple App Store and Google Play
Found in your App Store Connect URL: apps.apple.com/app/id[THIS_NUMBER]
For Chat33 Campaigns: Use these links in your DM flows with the Smart Link node. Chat33 will automatically append the contact ID and influencer ID so installs are attributed back to your campaign.
MMP Integration: If you use AppsFlyer, Adjust, Tenjin, or Singular — use their OneLink/tracking URLs instead, and configure the Chat33 postback URL in your MMP dashboard. See the MMP Postbacks section.
Need help integrating?
Our team can help you set up tracking and get the most out of Chat33's developer tools.