Obtain an access token with the ads:write scope via the Pinterest OAuth 2.0 flow and note your Ad Account ID.
Construct a POST request to the Pinterest Conversions API endpoint for your ad account, including the required headers for authorization and content type.
Build the event payload with required fields: event_name, action_source, event_time (Unix seconds), and user_data (hashed with SHA-256 lowercase).
Set the event_id field in your server-side event payload to a unique, stable identifier for this specific conversion occurrence (e.g., an order ID or a UUID generated at conversion time).
Ensure your Pinterest tag (browser-side) emits the same event_id for the same conversion event; Pinterest matches on event_id across server and browser sources to deduplicate and avoid double-counting.
Send the request and check the response for accepted/rejected counts; log rejected events with their error reasons for debugging.
Known gotchas
Deduplication only works when the server-side event_id exactly matches the event_id sent by the Pinterest tag on the same conversion; mismatched or missing event_id values will cause both events to count independently.
All user_data fields (email, phone, etc.) must be SHA-256 hashed in lowercase before transmission; Pinterest does not accept plaintext PII.
event_time must be within a recent window; significantly delayed events may be rejected or have reduced attribution value.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp