Menu

API reference · CRM

Conversions

crm · conversions · 6 operations

GET/v1/crm/conversions/config

List the conversions send-back configuration per platform

crm.conversions.config.list

ReadIdempotentSince 2026-11-01

Returns one row per ad platform (meta, google, tiktok, linkedin) with how the CRM sends offline conversions back to it when deals change: whether sending is enabled, the mapping rules (trigger stage_entered/won/lost, event name or destination, value source), the grace window in minutes, the chosen pixel or ad account with the candidates found by the last connection check (the only values crm.conversions.config.update accepts), and that check step by step (each step with message, its result in words). configured: false means the platform has no saved configuration (defaults shown). Read-only; any CRM member can read it. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records or fields are left out of the response (the permissions guide lists what each platform allows).

Scope
crm:read
Permission
View the module
MCP tool
crm_conversions_config_listOn the full surface; on the compact one, mb_execute_operation with id: "crm.conversions.config.list".

Declared cost: up to 2 reads and 0 writes per call (they count against the daily quota).

Parameters

No parameters.

Response

dataarray<object>
updated_atnumber | null
updated_by_idstring | null

Errors

Example

curl "https://api.mb-suite.com/v1/crm/conversions/config" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/crm/conversions/config" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/crm/conversions/events

List conversion events sent to the ad platforms

crm.conversions.events.list

ReadIdempotentSince 2026-11-01

Lists the conversion events the CRM queued or sent back to the ad platforms (one per deal and rule), newest first, paginated by cursor, optionally for one platform: deal, rule, event name, value, status (queued, canceled, sending, sent, failed, retrying, skipped), skip reason, attempts, the platform's error and, for Google, the later ingest confirmation. Read-only history; any CRM member can read it. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records or fields are left out of the response (the permissions guide lists what each platform allows).

Scope
crm:read
Permission
View the module
MCP tool
crm_conversions_events_listOn the full surface; on the compact one, mb_execute_operation with id: "crm.conversions.events.list".

Declared cost: up to 203 reads and 0 writes per call (they count against the daily quota).

Parameters

limitintegerqueryoptional

How many items this page brings at most (see the maximum and the default in the schema).

Default: 50

cursorstringqueryoptional

The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.

platformenumqueryoptional

Only the events of this platform: meta, google, tiktok or linkedin.

Values: meta, google, tiktok, linkedin

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/crm/conversions/events" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/crm/conversions/events" \
  -H "Authorization: Bearer $MB_TEST_KEY"
PATCH/v1/crm/conversions/config/{platform}

Update the conversions settings of a platform

crm.conversions.config.update

WriteIdempotentSince 2026-11-01

Updates the settings of one platform: the account or pixel chosen by hand (Meta pixel_id, Google customer_id, TikTok advertiser_id and pixel_code, LinkedIn account_id), only among the candidates found by the last connection check made in the app (crm.conversions.config.list shows them; another value is 400 account_not_linked or pixel_not_in_account), the grace window (0 to 60 minutes) and Google's default consent. Changing the LinkedIn account turns sending off and clears its rules' destinations; changing the TikTok advertiser clears its pixel. Does not enable sending (see crm.conversions.config.set_enabled). Owners and admins only. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).

Scope
crm:write
Permission
Edit in the module · Only owner, admin · CRM action: manage_attribution
MCP tool
crm_conversions_config_updateOn the full surface; on the compact one, mb_execute_operation with id: "crm.conversions.config.update".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

platformenumpathrequired

The ad platform: meta, google, tiktok or linkedin.

pixel_idstringbodyoptional

Meta: the pixel, only among the candidates of the last connection check, made in the app (crm.conversions.config.list shows them): pixel_candidates.

pixel_namestringbodyoptional

Meta: ignored; the name comes from the candidate.

ad_account_idstringbodyoptional

Meta: ignored; the ad account comes from the chosen pixel's candidate.

grace_minutesintegerbodyoptional

Minutes a conversion waits before it is sent (0 to 60): a stage change undone in that window is not sent.

customer_idstringbodyoptional

Google: the Google Ads account (digits only), only among the candidates of the last connection check, made in the app (crm.conversions.config.list shows them): customer_candidates.

customer_namestringbodyoptional

Google: ignored; the name comes from the candidate.

consent_defaultenumbodyoptional

Google: the default consent sent for EEA users, granted or unspecified.

Values: granted, unspecified

advertiser_idstringbodyoptional

TikTok: the advertiser, only among the candidates of the last connection check, made in the app (crm.conversions.config.list shows them): advertiser_candidates. A new advertiser clears the pixel.

pixel_codestringbodyoptional

TikTok: the pixel, only among the candidates of the last connection check, made in the app (crm.conversions.config.list shows them): pixel_candidates.

account_idstringbodyoptional

LinkedIn: the ad account, only among the candidates of the last connection check, made in the app (crm.conversions.config.list shows them): account_candidates. A new account turns sending off.

Response

oktrue

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/crm/conversions/config/{platform}" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X PATCH "https://api.mb-suite.com/v1/crm/conversions/config/{platform}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/conversions/config/{platform}/rules

Replace the conversion rules of a platform

crm.conversions.config.update_rules

WriteIdempotentSince 2026-11-01

Replaces the mapping rules of one platform (up to 30, evaluated by order: the first match wins): trigger stage_entered (with stage_id), won or lost, optional pipeline_id, the event name, value source (deal_value, fixed with fixed_value > 0, or none) and enabled. In an enabled rule the pipeline must exist and the stage must belong to it (or, without pipeline_id, to some pipeline): pipeline_not_found, stage_not_in_pipeline, stage_not_found. Google and LinkedIn rules need a destination_id among the verified conversion actions or rules; TikTok accepts only its standard events; Purchase on Meta and TikTok needs a value. Owners and admins only. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).

Scope
crm:write
Permission
Edit in the module · Only owner, admin · CRM action: manage_attribution
MCP tool
crm_conversions_config_update_rulesOn the full surface; on the compact one, mb_execute_operation with id: "crm.conversions.config.update_rules".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

platformenumpathrequired

The ad platform: meta, google, tiktok or linkedin.

rulesarray<object>bodyrequired

The whole list of rules (up to 30): it replaces the saved one.

Response

oktrue

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/crm/conversions/config/{platform}/rules" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "rules": []
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/crm/conversions/config/{platform}/rules" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "rules": []
}'
POST/v1/crm/conversions/config/{platform}/enabled

Turn conversions sending on or off for a platform

crm.conversions.config.set_enabled

WriteIdempotentSince 2026-11-01

Turns on (enabled: true) or off the sending of conversions to one platform. Turning it on requires a pixel or account chosen in the connection check made in the app (otherwise conversions_not_verified) and, when the platform has no rules yet, seeds a default one: won deal → Purchase with the deal value (Google and LinkedIn: their purchase-type conversion action or rule, or the first enabled one). From then on, each deal change that matches a rule sends a conversion with hashed contact data to the platform. Turning it off stops new sends; queued ones are skipped. The dry run runs the same check and says where it would send and which rules apply; outside the app, turning it on needs that dry run and its confirm_token (turning it off runs directly). Owners and admins only. With Google Ads, LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted (the permissions guide lists what each platform allows).

Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token. In this one, only when: enabled is true (from then on, each deal change that matches a rule sends a conversion with hashed contact data to the ad platform).

Scope
crm:write
Permission
Edit in the module · Only owner, admin · CRM action: manage_attribution
MCP tool
crm_conversions_config_set_enabledOn the full surface; on the compact one, mb_execute_operation with id: "crm.conversions.config.set_enabled".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

platformenumpathrequired

The ad platform: meta, google, tiktok or linkedin.

enabledbooleanbodyrequired

true turns sending on, false turns it off.

Response

oktrue

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/crm/conversions/config/{platform}/enabled" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "dry_run": true
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/crm/conversions/config/{platform}/enabled" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": true,
  "dry_run": true
}'
POST/v1/crm/conversions/config/{platform}/delete

Delete the conversions configuration of a platform

crm.conversions.config.delete

IrreversibleSince 2026-11-01

Deletes the whole configuration of one platform: the on/off switch, the rules, the chosen account or pixel, the health checks and the test state; sending stops. It does NOT disconnect the integration, does not touch conversion actions created in Google Ads and keeps the send history. There is no trash for this configuration (the audit log keeps a summary), so confirm with the user first; a dry run shows what would be lost (or that the platform has nothing saved). Owners and admins only.

Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.

Scope
crm:write and “Allow deletions” (crm:delete in OAuth)
Permission
Edit in the module · Only owner, admin · CRM action: manage_attribution
MCP tool
crm_conversions_config_deleteOn the full surface; on the compact one, mb_execute_operation with id: "crm.conversions.config.delete".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

platformenumpathrequired

The ad platform: meta, google, tiktok or linkedin.

Response

oktrue

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/crm/conversions/config/{platform}/delete" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/crm/conversions/config/{platform}/delete" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'