Skip to main content

Create Personalization Campaign

POST/v2/project/{project_key}/personalization/campaigns

Build a new Personalization campaign. Two strategies: accounts researches named companies and writes copy for each, personas writes one version per job role with no company list and no research. Returns a campaign to open, not a finished campaign, and never publishes.

Path parameters

ParameterDescription
project_keyYour project's API key

Body parameters

FieldTypeDescription
strategystringRequired. "accounts" or "personas"
namestringShort campaign name. One is invented if you leave it out
page_urlsarrayRequired. Pages to personalize, on your own site. Take these from Suggested Pages
goal_profile_idnumberThe conversion that decides whether personalization worked. Optional, but the campaign cannot be launched without one
accountsarrayRequired when strategy is accounts. Entries of { "name", "domain"?, "notes"? }
personasarrayRequired when strategy is personas. Entries of { "label", "description"? }
persona_paramstringpersonas only. The URL parameter carrying the role: utm_campaign (default), utm_term, utm_medium, utm_source or ref

Example

curl -X POST "https://api-{region}.mida.so/v2/project/YOUR_PROJECT_KEY/personalization/campaigns" \
-H "Authorization: Bearer YOUR_GENERATED_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"strategy": "accounts",
"name": "Q3 enterprise outbound",
"page_urls": ["https://yoursite.com/", "https://yoursite.com/pricing"],
"goal_profile_id": 969,
"accounts": [
{"name": "Notion", "domain": "notion.so", "notes": "Evaluating against Optimizely."}
]
}'

Success response

{
"success": true,
"abm_campaign_id": 41,
"name": "Q3 enterprise outbound",
"url": "/personalize/abm/41",
"account_count": 1,
"page_urls": ["https://yoursite.com/", "https://yoursite.com/pricing"],
"building": true,
"needs_goal": false
}

Notes

  • Nothing goes live. The campaign is built for review and someone launches it from the dashboard. To add to a campaign that is already running, use Add Accounts instead of creating a second one.
  • The build is asynchronous and costs a few minutes per account. Poll Get Campaign rather than assuming it finished.
  • page_urls must be on your project's own verified domains. The builder fetches each page, so anything else is refused and the response names what was refused and why.
  • The two strategies are not the same product. Accounts are deep and slow, matched by an opaque token in a link you send. Personas are cheap and immediate, matched by a plain URL parameter your ad's destination already carries.
  • Available only on accounts with Personalization switched on. Others get 403.