The sender email domain must be authorized for your organization and validated for email sending.
If sender validation fails, the entire campaign is rejected and the response includes sender_validation details.
If any recipient fails validation, the entire campaign is rejected and no emails are sent.
The response body details every validation error.
Set is_dry_run: true to validate recipients without sending any emails.
The authentication system on Partoo API is using API Key that should be put in the header of the request (the name of the header is x-APIKey). An api_key is linked to a user. This user's role will give you different access level to the API features.
The domain of this address must be authorized for your organization and validated for email sending.
If this check fails, the campaign is rejected with `status: failed` and the response includes
`sender_validation` details.
List of recipients for the campaign. Maximum 1000 recipients per call.
For larger lists, split them into batches and call this endpoint multiple times.
List of [email_address, missing_variable_names] pairs identifying recipients
who are missing one or more required template variables. Populated when status is failed
List of [email_address, empty_variable_names] pairs identifying recipients
who have one or more required template variables set to an empty string. Populated when status is failed
Store codes that could not be matched to a business in the organization.
Populated when status is failed and one or more recipients provided an unrecognized store_code variable.
Result of the sender email validation check. Populated when status is failed.
If sender_validation.status is not_validated, the sender domain is either not authorized
for the organization or not validated for email sending.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Partoo API","colors":{"primary":"#0266F1","light":"#0266F1","dark":"#0266F1"},"logo":{"light":"https://mintcdn.com/partoo/TsLSUe0VyG69h3IT/assets/logo/partoo_logo_light.svg?fit=max\u0026auto=format\u0026n=TsLSUe0VyG69h3IT\u0026q=85\u0026s=c2706dd9b3d972be1546dde374b38064","dark":"https://mintcdn.com/partoo/TsLSUe0VyG69h3IT/assets/logo/partoo_logo_dark.svg?fit=max\u0026auto=format\u0026n=TsLSUe0VyG69h3IT\u0026q=85\u0026s=dfa0b161e3b8ff41e718c7a54adac157"},"favicon":"https://mintcdn.com/partoo/KeL2LkyU0Aa40gpF/assets/favicon.png?fit=max\u0026auto=format\u0026n=KeL2LkyU0Aa40gpF\u0026q=85\u0026s=0f76461469f69f649f6d0e2b92540b8f","background":{"decoration":"windows"},"navbar":{"primary":{"type":"button","label":"Go to app","href":"https://app.partoo.co/connection"}},"footer":{"socials":{"website":"https://www.partoo.co/en","linkedin":"https://www.linkedin.com/company/partoo","youtube":"https://www.youtube.com/channel/UC9ET1Ec9XVXKEeBX2dMOvUw"}},"integrations":{"ga4":{"measurementId":"G-SP9LKMW0WX"}},"contextual":{"options":["copy","view","chatgpt"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Contact Us","icon":"envelope","href":"/misc/help/how-to-get-help"},{"anchor":"Status Page","icon":"wrench","href":"https://status.partoo.co"},{"anchor":"OpenAPI Spec","icon":"download","href":"/misc/help/openapi-download"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"partoo","hasAudioNarration":false,"actualSubdomain":"partoo","customDomains":["developers.partoo.co"],"gitSource":{"type":"github","owner":"partoohub","repo":"partoo-api-docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae1fff80ab3938238c9a167","collectionId":"e7582ac2-6c3f-4df8-965f-f7cbbc45d58d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae1fff80ab3938238c9a167"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae1fff80ab3938238c9a167","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API Reference","count":187},{"language":"default","tag":"API Guides","count":33},{"language":"default","tag":"Businesses","count":30},{"language":"default","tag":"Resources","count":21},{"language":"default","tag":"Webhooks Events","count":21},{"language":"default","tag":"Reviews","count":15},{"language":"default","tag":"Feedback Management","count":14},{"language":"default","tag":"Settings","count":12},{"language":"default","tag":"Webhooks","count":12},{"language":"default","tag":"Users","count":10}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false,"deflection":{"enabled":true,"email":"api@partoo.fr","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"assets/css/custom.css","content":"@font-face{font-family:\"Outfit\";font-style:normal;font-weight:100;src:url(../font/Outfit-Thin.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:200;src:url(../font/Outfit-ExtraLight.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:300;src:url(../font/Outfit-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:400;src:url(../font/Outfit-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:500;src:url(../font/Outfit-Medium.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:600;src:url(../font/Outfit-SemiBold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:700;src:url(../font/Outfit-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:800;src:url(../font/Outfit-ExtraBold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:\"Outfit\";font-style:normal;font-weight:900;src:url(../font/Outfit-Black.ttf) format(\"truetype\");font-display:swap}h1{font-size:30px;font-weight:700}#sidebar-title,.mdx-content,body,h1,h2,h3,h4,h5,h6{font-family:\"Outfit\",sans-serif}#sidebar-title,.mdx-content{font-size:17px}#sidebar-title{font-size:13px;font-weight:600;text-transform:uppercase;line-height:24px}.sidebar-group-icon{width:20px;height:20px}#navigation-items,#sidebar-group{display:flex;flex-direction:column;gap:4px}#sidebar-group>li,.sidebar-group>li{font-family:\"Outfit\",sans-serif;font-size:15px}.sidebar-group+.sidebar-group,li[data-group-tag]>ul>li+li{margin-top:4px}[data-component-part=callout-content]>*{font-size:15px}[data-component-part=callout-content] b,[data-component-part=callout-content] strong{color:inherit}#footer>div.flex.items-center.justify-between:nth-of-type(2){display:none}.effective-tag{display:inline-flex;align-items:center;gap:6px;margin-bottom:14px;padding:3px 12px;border-radius:9999px;background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d;font-family:\"Outfit\",sans-serif;font-size:13px;font-weight:600;line-height:1.5;white-space:nowrap}.dark .effective-tag{background-color:rgba(120,53,15,.35);color:#fcd34d;border-color:rgba(180,83,9,.6)}"}],"page":{"pagePath":"api-reference/feedback-management/send-a-feedback-email-campaign","slug":"/api-reference/feedback-management/send-a-feedback-email-campaign","pageMetadata":{"title":"Send a feedback email campaign","description":"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list.\n\nUse the [Get campaign requirements](/api-reference/feedback-management/get-campaign-requirements) endpoint\nto retrieve the variables each recipient must provide.\n\nThe sender email domain must be authorized for your organization and validated for email sending.\nIf sender validation fails, the entire campaign is rejected and the response includes `sender_validation` details.\n\nIf any recipient fails validation, the entire campaign is rejected and **no emails are sent**.\nThe response body details every validation error.\n\nSet `is_dry_run: true` to validate recipients without sending any emails.\n","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /feedback/campaign/send","href":"/api-reference/feedback-management/send-a-feedback-email-campaign","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Use the \", _jsx(_components.a, {\n href: \"/api-reference/feedback-management/get-campaign-requirements\",\n children: \"Get campaign requirements\"\n }), \" endpoint\\nto retrieve the variables each recipient must provide.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The sender email domain must be authorized for your organization and validated for email sending.\\nIf sender validation fails, the entire campaign is rejected and the response includes \", _jsx(_components.code, {\n children: \"sender_validation\"\n }), \" details.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If any recipient fails validation, the entire campaign is rejected and \", _jsx(_components.strong, {\n children: \"no emails are sent\"\n }), \".\\nThe response body details every validation error.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Set \", _jsx(_components.code, {\n children: \"is_dry_run: true\"\n }), \" to validate recipients without sending any emails.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Send a feedback email campaign","description":"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list.\n\nUse the [Get campaign requirements](/api-reference/feedback-management/get-campaign-requirements) endpoint\nto retrieve the variables each recipient must provide.\n\nThe sender email domain must be authorized for your organization and validated for email sending.\nIf sender validation fails, the entire campaign is rejected and the response includes `sender_validation` details.\n\nIf any recipient fails validation, the entire campaign is rejected and **no emails are sent**.\nThe response body details every validation error.\n\nSet `is_dry_run: true` to validate recipients without sending any emails.\n","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /feedback/campaign/send","href":"/api-reference/feedback-management/send-a-feedback-email-campaign","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/partoo/9c46dd6e2258b878/commitlint.config.js"],"openApiReferenceData":{"operation":{"operationId":"sendFeedbackEmailCampaign","summary":"Send a feedback email campaign","tags":["Feedback Management"],"description":"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list.\n\nUse the [Get campaign requirements](/api-reference/feedback-management/get-campaign-requirements) endpoint\nto retrieve the variables each recipient must provide.\n\nThe sender email domain must be authorized for your organization and validated for email sending.\nIf sender validation fails, the entire campaign is rejected and the response includes `sender_validation` details.\n\nIf any recipient fails validation, the entire campaign is rejected and **no emails are sent**.\nThe response body details every validation error.\n\nSet `is_dry_run: true` to validate recipients without sending any emails.\n","requestBody":"308be330-8c82-4476-9817-9b944de0c585","responses":{"200":"64c9dc58-3dcc-4b24-b7ee-febe7993984a","401":"b193d290-6f8b-4358-b173-fdfc23969354","403":"c0250825-814b-4636-9dff-c0b66611650c","404":"a642b1e4-b6b2-4f63-92e9-0b7538a6970c","422":"ec8e71c9-ca03-402f-a997-dfcd7f640542"},"method":"post","type":"path","servers":["76a2206f-c1bb-43af-851a-c18d9f163cb8","2d0a2165-f476-4d93-aea2-325fef8135d9"],"security":["36cca613-794e-4920-86ac-d9174ee114c1"],"path":"/feedback/campaign/send","baseUrlOptions":["https://api.partoo.co/v2","https://api.sandbox.partoo.co/v2"],"title":"Send a feedback email campaign","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["feedback_form_id","feedback_email_template_id","sender_email","sender_name","recipients"],"properties":{"feedback_form_id":{"type":"string","description":"ID of the feedback form to associate with this campaign","example":"5a3f8c2e1b4d7f9a0c6e2b18","isRequired":true,"uniqueKey":"feedback_form_id","typeLabel":"string"},"feedback_email_template_id":{"type":"integer","description":"ID of the email template to use for this campaign","example":42,"isRequired":true,"uniqueKey":"feedback_email_template_id","typeLabel":"integer"},"sender_email":{"type":"string","format":"email","description":"Email address displayed as the sender.\n\n\u003cWarning>\nThe domain of this address must be authorized for your organization and validated for email sending.\nIf this check fails, the campaign is rejected with `status: failed` and the response includes\n`sender_validation` details.\n\u003c/Warning>\n","example":"noreply@example.com","isRequired":true,"uniqueKey":"sender_email","typeLabel":"string\u003cemail>"},"sender_name":{"type":"string","description":"Name displayed as the sender","example":"Acme Corp","isRequired":true,"uniqueKey":"sender_name","typeLabel":"string"},"recipients":{"type":"array","description":"List of recipients for the campaign. Maximum 1000 recipients per call.\nFor larger lists, split them into batches and call this endpoint multiple times.\n","maxItems":1000,"items":{"type":"object","required":["email_address","variables"],"properties":{"email_address":{"type":"string","format":"email","description":"Recipient email address","example":"john.doe@example.com","isRequired":true,"uniqueKey":"recipients.items.[INDEX].email_address","typeLabel":"string\u003cemail>"},"variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"recipients.items.[INDEX].variables.additionalProperties","typeLabel":"string"},"description":"Key-value pairs for template variable substitution","example":{"first_name":"John","store_name":"Paris Store"},"isRequired":true,"uniqueKey":"recipients.items.[INDEX].variables","typeLabel":"object"},"unsubscribe_url":{"oneOf":[{"type":"string","format":"uri","description":"URL that allows the recipient to unsubscribe from future campaigns.\nMust be a valid HTTP or HTTPS URL when provided.\n\nIf omitted, Partoo will generate and inject a default unsubscribe link automatically.\nOpt-out records are stored by Partoo and can be exported from the Partoo interface\nas an XLSX file (columns: `email_address`, `opt_out_date`).\n\n\u003cWarning>\nIt is your responsibility to honour opt-outs and exclude opted-out recipients\nfrom future campaign sends. Partoo does not suppress opted-out addresses automatically.\n\u003c/Warning>\n","example":"https://example.com/unsubscribe?token=abc123","uniqueKey":"recipients.items.[INDEX].unsubscribe_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"URL that allows the recipient to unsubscribe from future campaigns.\nMust be a valid HTTP or HTTPS URL when provided.\n\nIf omitted, Partoo will generate and inject a default unsubscribe link automatically.\nOpt-out records are stored by Partoo and can be exported from the Partoo interface\nas an XLSX file (columns: `email_address`, `opt_out_date`).\n\n\u003cWarning>\nIt is your responsibility to honour opt-outs and exclude opted-out recipients\nfrom future campaign sends. Partoo does not suppress opted-out addresses automatically.\n\u003c/Warning>\n","example":"https://example.com/unsubscribe?token=abc123","uniqueKey":"recipients.items.[INDEX].unsubscribe_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"recipients.items.[INDEX].unsubscribe_url","typeLabel":"string\u003curi> | null"}},"uniqueKey":"recipients.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"recipients","typeLabel":"object[]"},"is_dry_run":{"type":"boolean","default":false,"description":"When `true`, validates the recipients without actually sending the emails.\nUse this to verify your recipient list before triggering a real send.\n","example":false,"uniqueKey":"is_dry_run","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"feedback_form_id":"5a3f8c2e1b4d7f9a0c6e2b18","feedback_email_template_id":42,"sender_email":"noreply@example.com","sender_name":"Acme Corp","recipients":[{"email_address":"john.doe@example.com","variables":{"first_name":"John","store_name":"Paris Store"},"unsubscribe_url":"https://example.com/unsubscribe?token=abc123"}],"is_dry_run":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"64c9dc58-3dcc-4b24-b7ee-febe7993984a":{"description":"Campaign accepted or failed validation. Check the `status` field to distinguish the two outcomes.","content":{"application/json":{"schema":{"type":"object","required":["status","feedback_form_id","feedback_email_template_id","recipient_count"],"properties":{"status":{"type":"string","enum":["accepted","failed"],"description":"`accepted` — validation passed; emails have been enqueued (or skipped if `is_dry_run` was `true`).\n\n`failed` — sender or recipient validation failed; no emails were sent.\nCheck the error fields for details.\n","example":"accepted","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"feedback_form_id":{"type":"string","description":"ID of the feedback form associated with this campaign","example":"5a3f8c2e1b4d7f9a0c6e2b18","isRequired":true,"uniqueKey":"feedback_form_id","typeLabel":"string"},"feedback_email_template_id":{"type":"integer","description":"ID of the email template used for this campaign","example":42,"isRequired":true,"uniqueKey":"feedback_email_template_id","typeLabel":"integer"},"recipient_count":{"type":"integer","description":"Total number of recipients provided in the request","example":150,"isRequired":true,"uniqueKey":"recipient_count","typeLabel":"integer"},"feedback_email_campaign_id":{"oneOf":[{"type":"integer","description":"ID of the created campaign. `null` when `status` is `failed` or `is_dry_run` is `true`","example":101,"uniqueKey":"feedback_email_campaign_id.oneOf.0","typeLabel":"integer"},{"type":"null","description":"ID of the created campaign. `null` when `status` is `failed` or `is_dry_run` is `true`","example":101,"uniqueKey":"feedback_email_campaign_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"feedback_email_campaign_id","typeLabel":"integer | null"},"recipient_count_exceeded":{"type":"boolean","default":false,"description":"`true` when the request contained more than 1000 recipients.\nSplit the list into batches of at most 1000 and retry.\n","example":false,"uniqueKey":"recipient_count_exceeded","typeLabel":"boolean"},"duplicate_emails":{"oneOf":[{"type":"array","description":"Email addresses that appear more than once in the recipients list. Populated when `status` is `failed`","items":{"type":"string","format":"email","uniqueKey":"duplicate_emails.oneOf.0.items.[INDEX]","typeLabel":"string\u003cemail>"},"example":["duplicate@example.com"],"uniqueKey":"duplicate_emails.oneOf.0","typeLabel":"string\u003cemail>[]"},{"type":"null","description":"Email addresses that appear more than once in the recipients list. Populated when `status` is `failed`","items":{"type":"string","format":"email"},"example":["duplicate@example.com"],"uniqueKey":"duplicate_emails.oneOf.1","typeLabel":"null"}],"uniqueKey":"duplicate_emails","typeLabel":"string\u003cemail>[] | null"},"invalid_emails":{"oneOf":[{"type":"array","description":"Email addresses that are not valid. Populated when `status` is `failed`","items":{"type":"string","uniqueKey":"invalid_emails.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["not-an-email","missing@"],"uniqueKey":"invalid_emails.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"Email addresses that are not valid. Populated when `status` is `failed`","items":{"type":"string"},"example":["not-an-email","missing@"],"uniqueKey":"invalid_emails.oneOf.1","typeLabel":"null"}],"uniqueKey":"invalid_emails","typeLabel":"string[] | null"},"missing_variables":{"oneOf":[{"type":"array","description":"List of `[email_address, missing_variable_names]` pairs identifying recipients\nwho are missing one or more required template variables. Populated when `status` is `failed`\n","items":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"string","format":"email","description":"Recipient email address","uniqueKey":"missing_variables.oneOf.0.items.[INDEX].[0]","typeLabel":"string\u003cemail>"},"[1]":{"type":"array","description":"Names of the missing variables for this recipient","items":{"type":"string","uniqueKey":"missing_variables.oneOf.0.items.[INDEX].[1].items.[INDEX]","typeLabel":"string"},"uniqueKey":"missing_variables.oneOf.0.items.[INDEX].[1]","typeLabel":"string[]"}},"uniqueKey":"missing_variables.oneOf.0.items.[INDEX]","typeLabel":"tuple"},"example":[["john@example.com",["first_name","store_name"]]],"uniqueKey":"missing_variables.oneOf.0","typeLabel":"tuple[]"},{"type":"null","description":"List of `[email_address, missing_variable_names]` pairs identifying recipients\nwho are missing one or more required template variables. Populated when `status` is `failed`\n","items":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"string","format":"email","description":"Recipient email address"},"[1]":{"type":"array","description":"Names of the missing variables for this recipient","items":{"type":"string"}}}},"example":[["john@example.com",["first_name","store_name"]]],"uniqueKey":"missing_variables.oneOf.1","typeLabel":"null"}],"uniqueKey":"missing_variables","typeLabel":"tuple[] | null"},"empty_variables":{"oneOf":[{"type":"array","description":"List of `[email_address, empty_variable_names]` pairs identifying recipients\nwho have one or more required template variables set to an empty string. Populated when `status` is `failed`\n","items":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"string","format":"email","description":"Recipient email address","uniqueKey":"empty_variables.oneOf.0.items.[INDEX].[0]","typeLabel":"string\u003cemail>"},"[1]":{"type":"array","description":"Names of the empty variables for this recipient","items":{"type":"string","uniqueKey":"empty_variables.oneOf.0.items.[INDEX].[1].items.[INDEX]","typeLabel":"string"},"uniqueKey":"empty_variables.oneOf.0.items.[INDEX].[1]","typeLabel":"string[]"}},"uniqueKey":"empty_variables.oneOf.0.items.[INDEX]","typeLabel":"tuple"},"example":[["jane@example.com",["store_name"]]],"uniqueKey":"empty_variables.oneOf.0","typeLabel":"tuple[]"},{"type":"null","description":"List of `[email_address, empty_variable_names]` pairs identifying recipients\nwho have one or more required template variables set to an empty string. Populated when `status` is `failed`\n","items":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"string","format":"email","description":"Recipient email address"},"[1]":{"type":"array","description":"Names of the empty variables for this recipient","items":{"type":"string"}}}},"example":[["jane@example.com",["store_name"]]],"uniqueKey":"empty_variables.oneOf.1","typeLabel":"null"}],"uniqueKey":"empty_variables","typeLabel":"tuple[] | null"},"invalid_store_codes":{"oneOf":[{"type":"array","description":"Store codes that could not be matched to a business in the organization.\nPopulated when `status` is `failed` and one or more recipients provided an unrecognized `store_code` variable.\n","items":{"type":"string","uniqueKey":"invalid_store_codes.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["UNKNOWN-001","STORE-999"],"uniqueKey":"invalid_store_codes.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"Store codes that could not be matched to a business in the organization.\nPopulated when `status` is `failed` and one or more recipients provided an unrecognized `store_code` variable.\n","items":{"type":"string"},"example":["UNKNOWN-001","STORE-999"],"uniqueKey":"invalid_store_codes.oneOf.1","typeLabel":"null"}],"uniqueKey":"invalid_store_codes","typeLabel":"string[] | null"},"sender_validation":{"oneOf":[{"type":"object","description":"Result of the sender email validation check. Populated when `status` is `failed`.\nIf `sender_validation.status` is `not_validated`, the sender domain is either not authorized\nfor the organization or not validated for email sending.\n","required":["sender_email","domain","status"],"example":{"sender_email":"noreply@example.com","domain":"example.com","status":"not_validated"},"properties":{"sender_email":{"type":"string","format":"email","description":"Sender email submitted in the request","example":"sender@example.com","isRequired":true,"uniqueKey":"sender_validation.oneOf.0.sender_email","typeLabel":"string\u003cemail>"},"domain":{"type":"string","description":"Domain extracted from `sender_email`","example":"example.com","isRequired":true,"uniqueKey":"sender_validation.oneOf.0.domain","typeLabel":"string"},"status":{"type":"string","enum":["validated","not_validated"],"description":"`validated` — the domain is authorized for the organization and validated for email sending.\n\n`not_validated` — the domain is not authorized for the organization or not validated for email sending.\n","example":"validated","isRequired":true,"uniqueKey":"sender_validation.oneOf.0.status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"sender_validation.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"sender_validation.oneOf.1","typeLabel":"null"}],"uniqueKey":"sender_validation","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"accepted","feedback_form_id":"5a3f8c2e1b4d7f9a0c6e2b18","feedback_email_template_id":42,"recipient_count":150,"feedback_email_campaign_id":101,"recipient_count_exceeded":false,"duplicate_emails":["duplicate@example.com"],"invalid_emails":["not-an-email","missing@"],"missing_variables":[["john@example.com",["first_name","store_name"]]],"empty_variables":[["jane@example.com",["store_name"]]],"invalid_store_codes":["UNKNOWN-001","STORE-999"],"sender_validation":{"sender_email":"noreply@example.com","domain":"example.com","status":"not_validated"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b193d290-6f8b-4358-b173-fdfc23969354":{"description":"You are not authenticated","content":{"application/json":{"schema":{"description":"Error that occurs when you are not authenticated","type":"object","properties":{"errors":{"type":"object","description":"The detail of the error encountered","properties":{"authentication":{"type":"string","default":"User not authenticated","uniqueKey":"errors.authentication","typeLabel":"string"}},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":{"authentication":"User not authenticated"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c0250825-814b-4636-9dff-c0b66611650c":{"description":"You are not allowed to perform this action\n","content":{"application/json":{"schema":{"description":"Error that occurs when you are authenticated but you are trying to perform an action you are not allowed to perform\n","type":"object","properties":{"errors":{"type":"object","description":"The detail of the error encountered","properties":{"authorization":{"type":"string","default":"Operation not allowed","uniqueKey":"errors.authorization","typeLabel":"string"}},"uniqueKey":"errors","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":{"authorization":"Operation not allowed"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a642b1e4-b6b2-4f63-92e9-0b7538a6970c":{"description":"Feedback form or email template not found","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string","example":"Form not found.","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":"Form not found."}}},"exampleType":"generated"}},"exampleType":"generated"},"ec8e71c9-ca03-402f-a997-dfcd7f640542":{"description":"Request body validation error","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"loc":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"any"},"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"any[]"},"msg":{"type":"string","uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"uniqueKey":"detail.items.[INDEX]","typeLabel":"object"},"uniqueKey":"detail","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cunknown>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"36cca613-794e-4920-86ac-d9174ee114c1":{"ApiKeyAuth":{"description":"The authentication system on Partoo API is using API Key that should be put in the header of the request (the name of the header is `x-APIKey`). An api_key is linked to a user. This user's role will give you different access level to the API features.\n","type":"apiKey","in":"header","name":"x-APIKey","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"76a2206f-c1bb-43af-851a-c18d9f163cb8":{"url":"https://api.partoo.co/v2","description":"Production server"},"2d0a2165-f476-4d93-aea2-325fef8135d9":{"url":"https://api.sandbox.partoo.co/v2","description":"Sandbox server (dev environment for clients \u0026 partners)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"The authentication system on Partoo API is using API Key that should be put in the header of the request (the name of the header is `x-APIKey`). An api_key is linked to a user. This user's role will give you different access level to the API features.\n","type":"apiKey","in":"header","name":"x-APIKey","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"x-APIKey","type":"string","description":"The authentication system on Partoo API is using API Key that should be put in the header of the request (the name of the header is `x-APIKey`). An api_key is linked to a user. This user's role will give you different access level to the API features.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"x-APIKey"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"assets/openapi/openapi-bundled.yaml"},"subdomain":"partoo","siteName":"Partoo API","title":"Send a feedback email campaign - Partoo API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T14:00:34.619Z","originalFileLocation":"api-reference/feedback-management/send-a-feedback-email-campaign.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list. Use the Get campaign requirements endpoint to retrieve the variables each recipient must provide. The sender email domain must be authorized for your organization and validated for email sending. If sender validation fails, the entire campaign is rejected and the response includes sender_validation details. If any recipient fails validation, the entire campaign is rejected and no emails are sent. The response body details every validation error. Set is_dry_run: true to validate recipients without sending any emails.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Partoo API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Send a feedback email campaign - Partoo API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list. Use the Get campaign requirements endpoint to retrieve the variables each recipient must provide. The sender email domain must be authorized for your organization and validated for email sending. If sender validation fails, the entire campaign is rejected and the response includes sender_validation details. If any recipient fails validation, the entire campaign is rejected and no emails are sent. The response body details every validation error. Set is_dry_run: true to validate recipients without sending any emails.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Partoo API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://partoo.mintlify.app/_mintlify/api/og/v2?division=Feedback+Management\u0026amp;title=Send+a+feedback+email+campaign\u0026amp;description=Validates+the+sender+email%2C+validates+recipients%2C+and+sends+a+feedback+email+campaign+to+the+provided+recipient+list.%0A%0AUse+the+%5BGet+campaign+requirements%5D%28%2Fapi-\u0026amp;theme=451deef761086627b198f8eb\u0026amp;signature=4c1324f364cc201bd1710bd5bac3e0c96dded76d311431e239be9af3cd40e331\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Send a feedback email campaign - Partoo API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list. Use the Get campaign requirements endpoint to retrieve the variables each recipient must provide. The sender email domain must be authorized for your organization and validated for email sending. If sender validation fails, the entire campaign is rejected and the response includes sender_validation details. If any recipient fails validation, the entire campaign is rejected and no emails are sent. The response body details every validation error. Set is_dry_run: true to validate recipients without sending any emails.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://partoo.mintlify.app/_mintlify/api/og/v2?division=Feedback+Management\u0026amp;title=Send+a+feedback+email+campaign\u0026amp;description=Validates+the+sender+email%2C+validates+recipients%2C+and+sends+a+feedback+email+campaign+to+the+provided+recipient+list.%0A%0AUse+the+%5BGet+campaign+requirements%5D%28%2Fapi-\u0026amp;theme=451deef761086627b198f8eb\u0026amp;signature=4c1324f364cc201bd1710bd5bac3e0c96dded76d311431e239be9af3cd40e331\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/partoo/iSD9OpeAJmM-nq5n/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Partoo API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0266F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/feedback-management/send-a-feedback-email-campaign.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.partoo.co/#organization\",\"name\":\"Partoo API\",\"url\":\"https://developers.partoo.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/partoo/TsLSUe0VyG69h3IT/assets/logo/partoo_logo_light.svg?fit=max\u0026auto=format\u0026n=TsLSUe0VyG69h3IT\u0026q=85\u0026s=c2706dd9b3d972be1546dde374b38064\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.partoo.co#website\",\"name\":\"Partoo API\",\"url\":\"https://developers.partoo.co\",\"publisher\":{\"@id\":\"https://developers.partoo.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign#webpage\",\"url\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign\",\"name\":\"Send a feedback email campaign\",\"description\":\"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list. Use the Get campaign requirements endpoint to retrieve the variables each recipient must provide. The sender email domain must be authorized for your organization and validated for email sending. If sender validation fails, the entire campaign is rejected and the response includes sender_validation details. If any recipient fails validation, the entire campaign is rejected and no emails are sent. The response body details every validation error. Set is_dry_run: true to validate recipients without sending any emails.\",\"dateModified\":\"2026-10-28T14:00:34.619Z\",\"isPartOf\":{\"@id\":\"https://developers.partoo.co#website\"},\"breadcrumb\":{\"@id\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Feedback Management\",\"item\":\"https://developers.partoo.co/api-reference/feedback-management/list-email-templates\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Send a feedback email campaign\",\"item\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign#apireference\",\"headline\":\"Send a feedback email campaign\",\"name\":\"Send a feedback email campaign\",\"description\":\"Validates the sender email, validates recipients, and sends a feedback email campaign to the provided recipient list. Use the Get campaign requirements endpoint to retrieve the variables each recipient must provide. The sender email domain must be authorized for your organization and validated for email sending. If sender validation fails, the entire campaign is rejected and the response includes sender_validation details. If any recipient fails validation, the entire campaign is rejected and no emails are sent. The response body details every validation error. Set is_dry_run: true to validate recipients without sending any emails.\",\"url\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign\",\"mainEntityOfPage\":{\"@id\":\"https://developers.partoo.co/api-reference/feedback-management/send-a-feedback-email-campaign#webpage\"},\"dateModified\":\"2026-10-28T14:00:34.619Z\",\"publisher\":{\"@id\":\"https://developers.partoo.co/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.partoo.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Partoo API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Partoo API","nav":{"global":{"anchors":[{"anchor":"Contact Us","icon":"envelope","href":"/misc/help/how-to-get-help"},{"anchor":"Status Page","icon":"wrench","href":"https://status.partoo.co"},{"anchor":"OpenAPI Spec","icon":"download","href":"/misc/help/openapi-download"}]},"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":""}]},{"tab":"API Guides","pages":[{"title":"API Guides","href":"/guides/api/getting-started/getting-started"}]},{"tab":"SDK Guides","pages":[{"title":"SDK Guides","href":"/guides/sdk/getting-started/quickstart"}]},{"tab":"API Reference","groups":[{"group":"ApiKeys","pages":[{"title":"List user API keys","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /api_keys","href":"/api-reference/apikeys/list-user-api-keys"},{"title":"Create API key","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /api_keys","href":"/api-reference/apikeys/create-api-key"},{"title":"API key information","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /api_keys/{key_id}","href":"/api-reference/apikeys/api-key-information"},{"title":"Update API key","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /api_keys/{key_id}","href":"/api-reference/apikeys/update-api-key"},{"title":"Revoke API key","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /api_keys/revoke/{key_id}","href":"/api-reference/apikeys/revoke-api-key"}]},{"group":"Businesses","pages":[{"title":"Search for businesses","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/search","href":"/api-reference/businesses/search-for-businesses"},{"title":"Get completion rate stats from your businesses","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/search/stats","href":"/api-reference/businesses/get-completion-rate-stats-from-your-businesses"},{"title":"Statistics for your connected businesses","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/connections_stats","href":"/api-reference/businesses/statistics-for-your-connected-businesses"},{"title":"Create business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business","href":"/api-reference/businesses/create-business"},{"title":"Business information","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}","href":"/api-reference/businesses/business-information"},{"title":"Update business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}","href":"/api-reference/businesses/update-business"},{"title":"Delete business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /business/{business_id}","href":"/api-reference/businesses/delete-business"},{"title":"Additional data for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/additional_data","href":"/api-reference/businesses/additional-data-for-your-business"},{"title":"Set additional data for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/additional_data","href":"/api-reference/businesses/set-additional-data-for-your-business"},{"title":"Google attributes for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/attributes","href":"/api-reference/businesses/google-attributes-for-your-business"},{"title":"Set Google attributes for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/attributes","href":"/api-reference/businesses/set-google-attributes-for-your-business"},{"title":"Google Lodging attributes for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/lodging","href":"/api-reference/businesses/google-lodging-attributes-for-your-business"},{"title":"Set Google Lodging attributes for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/lodging","href":"/api-reference/businesses/set-google-lodging-attributes-for-your-business"},{"title":"More hours for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/more_hours","href":"/api-reference/businesses/more-hours-for-your-business"},{"title":"Set more hours for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/more_hours","href":"/api-reference/businesses/set-more-hours-for-your-business"},{"title":"Google Services for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/services","href":"/api-reference/businesses/google-services-for-your-business"},{"title":"Delete Google Services for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /business/{business_id}/services/{service_id}","href":"/api-reference/businesses/delete-google-services-for-your-business"},{"title":"Set Google Services for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/structured_services","href":"/api-reference/businesses/set-google-services-for-your-business"},{"title":"Set custom Google Services for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/free_form_services","href":"/api-reference/businesses/set-custom-google-services-for-your-business"},{"title":"Google Food Menus for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/food_menus","href":"/api-reference/businesses/google-food-menus-for-your-business"},{"title":"Set Google Food Menus for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/food_menus","href":"/api-reference/businesses/set-google-food-menus-for-your-business"},{"title":"Delete Google Food Menus for your business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /business/{business_id}/food_menus","href":"/api-reference/businesses/delete-google-food-menus-for-your-business"},{"title":"Get Place Action Links","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/place_action_links","href":"/api-reference/businesses/get-place-action-links"},{"title":"Set Place Action Links","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/place_action_links","href":"/api-reference/businesses/set-place-action-links"},{"title":"Subscriptions for your business","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/subscription","href":"/api-reference/businesses/subscriptions-for-your-business"},{"title":"Subscribe a business","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/subscribe","href":"/api-reference/businesses/subscribe-a-business"},{"title":"Unsubscribe a business","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/unsubscribe","href":"/api-reference/businesses/unsubscribe-a-business"}]},{"group":"Business Fields","pages":[{"title":"Business fields configuration for a business","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/business_fields","href":"/api-reference/business-fields/business-fields-configuration-for-a-business"},{"title":"Business fields configuration for an organization","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /org/{org_id}/business_fields","href":"/api-reference/business-fields/business-fields-configuration-for-an-organization"}]},{"group":"Categories","pages":[{"title":"List Partoo categories","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /categories","href":"/api-reference/categories/list-partoo-categories"},{"title":"Category information","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /categories/{category_id}","href":"/api-reference/categories/category-information"},{"title":"Suggested additional categories","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /categories/{category_id}/suggestions","href":"/api-reference/categories/suggested-additional-categories"}]},{"group":"Connection Tokens","pages":[{"title":"Generate connection token","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /connection/generate_token","href":"/api-reference/connection-tokens/generate-connection-token"},{"title":"Revoke connection token","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /connection/revoke_token","href":"/api-reference/connection-tokens/revoke-connection-token"},{"title":"Check connection token","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /connection/check_token","href":"/api-reference/connection-tokens/check-connection-token"}]},{"group":"Messages","pages":[{"title":"List conversations","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /conversations","href":"/api-reference/messages/list-conversations"},{"title":"Conversation information","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /conversations/{conversation_id}","href":"/api-reference/messages/conversation-information"},{"title":"Update conversation","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /conversations/{conversation_id}","href":"/api-reference/messages/update-conversation"},{"title":"Update conversation","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml patch /conversations/{conversation_id}","href":"/api-reference/messages/update-conversation-1"},{"title":"Read conversation","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /conversations/{conversation_id}/read","href":"/api-reference/messages/read-conversation"},{"title":"List messages","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /messages","href":"/api-reference/messages/list-messages"},{"title":"Send message","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /messages","href":"/api-reference/messages/send-message"},{"title":"Retry send message","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /messages/{message_id}/retry","href":"/api-reference/messages/retry-send-message"}]},{"group":"Custom Channels","pages":[{"title":"Ingest message","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom-channels/{channel_id}/messages","href":"/api-reference/custom-channels/ingest-message"}]},{"group":"Message Reply Templates","pages":[{"title":"List message templates","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /messaging/templates","href":"/api-reference/message-reply-templates/list-message-templates"},{"title":"Create message template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /messaging/templates","href":"/api-reference/message-reply-templates/create-message-template"},{"title":"Update message template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /messaging/templates/{template_id}","href":"/api-reference/message-reply-templates/update-message-template"},{"title":"Delete message template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /messaging/templates/{template_id}","href":"/api-reference/message-reply-templates/delete-message-template"}]},{"group":"Messaging Settings","pages":[{"title":"List messaging settings","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /messaging/settings","href":"/api-reference/messaging-settings/list-messaging-settings"},{"title":"Update messaging settings","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /messaging/settings/{setting_id}","href":"/api-reference/messaging-settings/update-messaging-settings"}]},{"group":"Custom Fields","pages":[{"title":"Get custom fields","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /custom_fields","href":"/api-reference/custom-fields/get-custom-fields"},{"title":"Create custom fields","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom_fields","href":"/api-reference/custom-fields/create-custom-fields"},{"title":"Update custom field","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /custom_fields/{custom_field_id}","href":"/api-reference/custom-fields/update-custom-field"},{"title":"Delete custom field","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /custom_fields/{custom_field_id}","href":"/api-reference/custom-fields/delete-custom-field"},{"title":"Order custom fields","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom_fields/order","href":"/api-reference/custom-fields/order-custom-fields"}]},{"group":"Custom Fields Section","pages":[{"title":"Get custom field sections","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /custom_fields/section","href":"/api-reference/custom-fields-section/get-custom-field-sections"},{"title":"Create custom field sections","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom_fields/section","href":"/api-reference/custom-fields-section/create-custom-field-sections"},{"title":"Update custom field sections","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /custom_fields/section/{section_id}","href":"/api-reference/custom-fields-section/update-custom-field-sections"},{"title":"Delete custom field section","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /custom_fields/section/{section_id}","href":"/api-reference/custom-fields-section/delete-custom-field-section"}]},{"group":"Custom Roles","pages":[{"title":"List Custom Roles","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /custom_role","href":"/api-reference/custom-roles/list-custom-roles"},{"title":"Create Custom Role","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom_role","href":"/api-reference/custom-roles/create-custom-role"},{"title":"Get Custom Role","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /custom_role/{custom_role_api_id}","href":"/api-reference/custom-roles/get-custom-role"},{"title":"Update Custom Role","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom_role/{custom_role_api_id}","href":"/api-reference/custom-roles/update-custom-role"},{"title":"Delete Custom Role","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /custom_role/{custom_role_api_id}","href":"/api-reference/custom-roles/delete-custom-role"},{"title":"Duplicate Custom Role","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /custom_role/duplicate","href":"/api-reference/custom-roles/duplicate-custom-role"},{"title":"Get Permissions","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /permissions","href":"/api-reference/custom-roles/get-permissions"},{"title":"Get Custom Roles switch status","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /org/{org_id}/switch_to_custom_roles","href":"/api-reference/custom-roles/get-custom-roles-switch-status"},{"title":"Switch to Custom Roles","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /org/{org_id}/switch_to_custom_roles","href":"/api-reference/custom-roles/switch-to-custom-roles"}]},{"group":"Google","pages":[{"title":"List Google Attributes","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /attributes/list","href":"/api-reference/google/list-google-attributes"},{"title":"List Google more hours","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /more_hours/list","href":"/api-reference/google/list-google-more-hours"},{"title":"List Google Lodging attributes","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /lodging/list","href":"/api-reference/google/list-google-lodging-attributes"},{"title":"List Google Services","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /services/suggestions","href":"/api-reference/google/list-google-services"},{"title":"Details on a specific Google Location","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /google-oauth-accounts/locations/{google_location_id}","href":"/api-reference/google/details-on-a-specific-google-location"},{"title":"Search for Google locations","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /google-oauth-accounts/locations/search","href":"/api-reference/google/search-for-google-locations"},{"title":"Fetch Google Location Verification Options","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /verifications/google-locations/{google_location_id}/options","href":"/api-reference/google/fetch-google-location-verification-options"},{"title":"Start Google Location Verification Process","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /verifications/google-locations/{google_location_id}/start","href":"/api-reference/google/start-google-location-verification-process"},{"title":"Complete Google Location Verification Process","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /verifications/google-locations/{google_location_id}/complete","href":"/api-reference/google/complete-google-location-verification-process"}]},{"group":"Groups and Sections","pages":[{"title":"Get Sections","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /sections","href":"/api-reference/groups-and-sections/get-sections"},{"title":"Create Section","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /sections","href":"/api-reference/groups-and-sections/create-section"},{"title":"Get Section by ID","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /sections/{section_id}","href":"/api-reference/groups-and-sections/get-section-by-id"},{"title":"Update Section","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /sections/{section_id}","href":"/api-reference/groups-and-sections/update-section"},{"title":"Delete Section","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /sections/{section_id}","href":"/api-reference/groups-and-sections/delete-section"},{"title":"Create Group and set businesses","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /sections/{section_id}/groups","href":"/api-reference/groups-and-sections/create-group-and-set-businesses"},{"title":"Get Group","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /sections/{section_id}/groups/{group_id}","href":"/api-reference/groups-and-sections/get-group"},{"title":"Update Group and set businesses","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /sections/{section_id}/groups/{group_id}","href":"/api-reference/groups-and-sections/update-group-and-set-businesses"},{"title":"Delete Group","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /sections/{section_id}/groups/{group_id}","href":"/api-reference/groups-and-sections/delete-group"}]},{"group":"Holidays","pages":[{"title":"Get holidays","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /holidays/{country}","href":"/api-reference/holidays/get-holidays"}]},{"group":"Organizations","pages":[{"title":"Search for organizations","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /org/search","href":"/api-reference/organizations/search-for-organizations"},{"title":"Create organization","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /org","href":"/api-reference/organizations/create-organization"},{"title":"Organization information","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /org/{org_id}","href":"/api-reference/organizations/organization-information"},{"title":"Update organization","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /org/{org_id}","href":"/api-reference/organizations/update-organization"},{"title":"Delete organization","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /org/{org_id}","href":"/api-reference/organizations/delete-organization"}]},{"group":"Posts","pages":[{"title":"Search for post","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /posts","href":"/api-reference/posts/search-for-post"},{"title":"Create a post","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /posts","href":"/api-reference/posts/create-a-post"},{"title":"Update a post","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /posts/{post_id}","href":"/api-reference/posts/update-a-post"},{"title":"Delete a post","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /posts/{post_id}","href":"/api-reference/posts/delete-a-post"}]},{"group":"Place Action Links","pages":[{"title":"Get Place Action Links","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /place_action_links","href":"/api-reference/place-action-links/get-place-action-links"}]},{"group":"Presence","pages":[{"title":"PublisherStates","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /publisher_states","href":"/api-reference/presence/publisherstates"},{"title":"PublisherErrors (DEPRECATED)","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /publisher_errors/{business_id}","href":"/api-reference/presence/publishererrors-deprecated"},{"title":"Get diffusion errors for a business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /diffusion_errors/{business_id}","href":"/api-reference/presence/get-diffusion-errors-for-a-business"}]},{"group":"Reviews","pages":[{"title":"Search for reviews","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews","href":"/api-reference/reviews/search-for-reviews"},{"title":"Create and update a review from a custom partner","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /reviews","href":"/api-reference/reviews/create-and-update-a-review-from-a-custom-partner"},{"title":"Update a review","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /reviews/{review_id}","href":"/api-reference/reviews/update-a-review"},{"title":"Delete a review from a custom partner","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /reviews/{review_id}","href":"/api-reference/reviews/delete-a-review-from-a-custom-partner"},{"title":"List review partners","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /review-partners","href":"/api-reference/reviews/list-review-partners"},{"title":"Post a reply to a review","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /comments","href":"/api-reference/reviews/post-a-reply-to-a-review"},{"title":"Modify a reply to a review","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /comments/{comment_id}","href":"/api-reference/reviews/modify-a-reply-to-a-review"},{"title":"Delete the given reply to a review","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /comments/{comment_id}","href":"/api-reference/reviews/delete-the-given-reply-to-a-review"},{"title":"Search for review reply templates","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews/templates/search","href":"/api-reference/reviews/search-for-review-reply-templates"},{"title":"All available placeholders","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews/templates/placeholders","href":"/api-reference/reviews/all-available-placeholders"},{"title":"Create a review reply template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /reviews/template","href":"/api-reference/reviews/create-a-review-reply-template"},{"title":"Delete a review reply template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /reviews/template/{template_id}","href":"/api-reference/reviews/delete-a-review-reply-template"},{"title":"Fetch AI reply suggestion for reviews","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews/fetch-suggestion/{review_id}/{index}","href":"/api-reference/reviews/fetch-ai-reply-suggestion-for-reviews"}]},{"group":"Presence analytics","pages":[{"title":"Profile metrics for your business","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /presence_analytics/metrics","href":"/api-reference/presence-analytics/profile-metrics-for-your-business"},{"title":"Profile keywords for your business","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /presence_analytics/keywords","href":"/api-reference/presence-analytics/profile-keywords-for-your-business"}]},{"group":"Review analytics","pages":[{"title":"Get Review metrics","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /review_analytics/metrics","href":"/api-reference/review-analytics/get-review-metrics"},{"title":"Global reviews statistics","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews/stats","href":"/api-reference/review-analytics/global-reviews-statistics"},{"title":"Qualitative evolution","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews/qualitative-evolution","href":"/api-reference/review-analytics/qualitative-evolution"},{"title":"Quantitative evolution","deprecated":true,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /reviews/quantitative-evolution","href":"/api-reference/review-analytics/quantitative-evolution"}]},{"group":"Review Booster","pages":[{"title":"Send a review invitation","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /review_booster/send_invitation","href":"/api-reference/review-booster/send-a-review-invitation"},{"title":"Search for an invitation matching a set of criteria","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /review_booster/search-invitation","href":"/api-reference/review-booster/search-for-an-invitation-matching-a-set-of-criteria"},{"title":"The status of a review invitation","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /review_booster/invitation_status","href":"/api-reference/review-booster/the-status-of-a-review-invitation"},{"title":"Template for a user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /review_booster/template","href":"/api-reference/review-booster/template-for-a-user"},{"title":"Update the template of a user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /review_booster/template","href":"/api-reference/review-booster/update-the-template-of-a-user"},{"title":"The expeditor name of a business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /review_booster/expeditor","href":"/api-reference/review-booster/the-expeditor-name-of-a-business"},{"title":"Set the expeditor name of a business","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /review_booster/expeditor","href":"/api-reference/review-booster/set-the-expeditor-name-of-a-business"}]},{"group":"Subscriptions","pages":[{"title":"Get Organization's plans","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /org/{org_id}/plans","href":"/api-reference/subscriptions/get-organizations-plans"},{"title":"Update organization's plans","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /org/{org_id}/plans","href":"/api-reference/subscriptions/update-organizations-plans"},{"title":"Get Business's plans","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /business/{business_id}/plans","href":"/api-reference/subscriptions/get-businesss-plans"},{"title":"Update business's plans","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /business/{business_id}/plans","href":"/api-reference/subscriptions/update-businesss-plans"}]},{"group":"Users","pages":[{"title":"Search for users","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /user/search","href":"/api-reference/users/search-for-users"},{"title":"My user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /user/me","href":"/api-reference/users/my-user"},{"title":"Create user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /user","href":"/api-reference/users/create-user"},{"title":"User information","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /user/{user_id}","href":"/api-reference/users/user-information"},{"title":"Update user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /user/{user_id}","href":"/api-reference/users/update-user"},{"title":"Delete user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /user/{user_id}","href":"/api-reference/users/delete-user"},{"title":"User preferences","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /user/{user_id}/preferences","href":"/api-reference/users/user-preferences"},{"title":"Set user preferences","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /user/{user_id}/preferences","href":"/api-reference/users/set-user-preferences"},{"title":"Invite user","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /user/{user_id}/invite","href":"/api-reference/users/invite-user"},{"title":"User businesses","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /user/{user_id}/businesses","href":"/api-reference/users/user-businesses"}]},{"group":"Feedback Management","pages":[{"title":"List email templates","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/email-templates","href":"/api-reference/feedback-management/list-email-templates"},{"title":"Create an email template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /feedback/email-templates","href":"/api-reference/feedback-management/create-an-email-template"},{"title":"Update an email template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /feedback/email-templates/{template_id}","href":"/api-reference/feedback-management/update-an-email-template"},{"title":"Delete an email template","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /feedback/email-templates/{template_id}","href":"/api-reference/feedback-management/delete-an-email-template"},{"title":"Search for feedback forms","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/feedback_form","href":"/api-reference/feedback-management/search-for-feedback-forms"},{"title":"Update a feedback form","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml put /feedback/feedback_form/{feedback_form_id}","href":"/api-reference/feedback-management/update-a-feedback-form"},{"title":"Push email-delivery stats for a feedback form","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /feedback/feedback_form/stats","href":"/api-reference/feedback-management/push-email-delivery-stats-for-a-feedback-form"},{"title":"Search for feedback results","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/feedback_result","href":"/api-reference/feedback-management/search-for-feedback-results"},{"title":"Get a feedback result by ID","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/feedback_result/{feedback_result_id}","href":"/api-reference/feedback-management/get-a-feedback-result-by-id"},{"title":"Reply to a feedback result","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /feedback/feedback_result/{feedback_result_id}/reply","href":"/api-reference/feedback-management/reply-to-a-feedback-result"},{"title":"Fetch AI reply suggestion for feedback results","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/feedback_result/fetch-suggestion/{feedback_result_id}/{index}","href":"/api-reference/feedback-management/fetch-ai-reply-suggestion-for-feedback-results"},{"title":"Get campaign requirements","description":"\u003cWarning>\nThe Feedback Management API is currently in **BETA**, therefore the following endpoints are subject to modification, given a **2 week notice**.\n\nIf you are planning to use any of them, please **notify us** so we will be able to keep you informed about upcoming changes.\n\u003c/Warning>\n\nReturns the recipient fields and template variables needed to prepare a feedback email campaign\nfor the given feedback form and email template.\n\nUse this endpoint before [Send a feedback email campaign](/api-reference/feedback-management/send-a-feedback-email-campaign)\nto determine which keys to include in each recipient payload.\n","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/campaign/requirements","href":"/api-reference/feedback-management/get-campaign-requirements"},{"title":"Send a feedback email campaign","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /feedback/campaign/send","href":"/api-reference/feedback-management/send-a-feedback-email-campaign"}]},{"group":"Feedback analytics","pages":[{"title":"Feedback analytics metrics","description":"**⚠️ This feature is available only for organisations subscribed to Feedback Management. ⚠️**\n\nRetrieve aggregated feedback analytics data for your organisation.\n\nA request is composed of:\n- One or more **`metrics`** — the data you want to compute (required)\n- An optional **`dimensions`** — how the data is grouped\n - If omitted, the request returns the aggregated totals across all data matching the filters\n- An optional **`order_by`** — how the rows are sorted\n- **Filters** to narrow the data:\n - By business (`business__in`, `business__notin`)\n - By group or group section (`groups`, `group_section_id`)\n - By date range (`filter_date__gte`, `filter_date__lte`)\n - By survey or field (`survey__in`, `survey_field__in`, `survey_field_type__in`)\n - By NPS score (`result_nps_score__in`)\n - By free-text comment (`verbatim_query`)\n - By data quality issues (`issues__in`, `issues__notin`)\n - By business location (`city`, `query`)\n\n**Metrics** are grouped into five categories:\n\n| Category | Prefix | Examples |\n|---|---|---|\n| Survey | `survey.` | `survey.response_rate`, `survey.nb__sent` |\n| CSAT | `result.csat.` | `result.csat.score`, `result.csat.avg_score` |\n| NPS | `result.nps.` | `result.nps.score`, `result.nps.promoters` |\n| Response | `response.` | `response.avg_response_time`, `response.method.nb__ai` |\n| Result field | `result_field.` | `result_field.rating`, `result_field.choices` |\n\n**Dimensions** control how rows are grouped:\n- Entity: `business`, `user`, `feedback_form`, `group`, `group_section`, `feedback_form_field`, `result`\n- Time: `day`, `month`, `year`\n\n**Excel download**: add `download=true` to receive the data as an `.xlsx` file instead of JSON.\nUse `table_name` to customise the filename.\n\n**Metadata**: add `metadata=true` to include full entity objects (businesses, forms, users…)\nalongside the `data` array. Useful for resolving IDs to display names without extra API calls.\n","deprecated":false,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /feedback/analytics/metrics","href":"/api-reference/feedback-analytics/feedback-analytics-metrics"}]},{"group":"Webhooks","pages":[{"title":"Get a list of webhook configurations","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /webhooks","href":"/api-reference/webhooks/get-a-list-of-webhook-configurations"},{"title":"Create webhook configurations","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /webhooks","href":"/api-reference/webhooks/create-webhook-configurations"},{"title":"Get a webhook configuration","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /webhooks/{webhook_id}","href":"/api-reference/webhooks/get-a-webhook-configuration"},{"title":"Delete a webhook configuration","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml delete /webhooks/{webhook_id}","href":"/api-reference/webhooks/delete-a-webhook-configuration"},{"title":"Update a webhook configuration","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml patch /webhooks/{webhook_id}","href":"/api-reference/webhooks/update-a-webhook-configuration"},{"title":"Send test webhook payloads","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml post /webhooks/tryout","href":"/api-reference/webhooks/send-test-webhook-payloads"},{"title":"List available webhook events","deprecated":null,"version":null,"openapi":"/assets/openapi/openapi-bundled.yaml get /webhooks/events","href":"/api-reference/webhooks/list-available-webhook-events"}]},{"group":"Webhooks Events","pages":[{"title":"New business created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook businessCreated","href":"/api-reference/webhooks-events/new-business-created"},{"title":"Business updated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook businessUpdated","href":"/api-reference/webhooks-events/business-updated"},{"title":"Business deleted","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook businessDeleted","href":"/api-reference/webhooks-events/business-deleted"},{"title":"Message created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook messageCreated","href":"/api-reference/webhooks-events/message-created"},{"title":"Message updated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook messageUpdated","href":"/api-reference/webhooks-events/message-updated"},{"title":"Lead received","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook leadReceived","href":"/api-reference/webhooks-events/lead-received"},{"title":"Review created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook reviewCreated","href":"/api-reference/webhooks-events/review-created"},{"title":"Review updated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook reviewUpdated","href":"/api-reference/webhooks-events/review-updated"},{"title":"Review reply created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook reviewReplyCreated","href":"/api-reference/webhooks-events/review-reply-created"},{"title":"Review reply updated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook reviewReplyUpdated","href":"/api-reference/webhooks-events/review-reply-updated"},{"title":"Review reply deleted","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook reviewReplyDeleted","href":"/api-reference/webhooks-events/review-reply-deleted"},{"title":"Custom review reply created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook customReplyCreated","href":"/api-reference/webhooks-events/custom-review-reply-created"},{"title":"Custom review reply updated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook customReplyUpdated","href":"/api-reference/webhooks-events/custom-review-reply-updated"},{"title":"Custom review reply deleted","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook customReplyDeleted","href":"/api-reference/webhooks-events/custom-review-reply-deleted"},{"title":"Email opt out created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook emailOptOutCreated","href":"/api-reference/webhooks-events/email-opt-out-created"},{"title":"Post created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook postCreated","href":"/api-reference/webhooks-events/post-created"},{"title":"Post updated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook postUpdated","href":"/api-reference/webhooks-events/post-updated"},{"title":"Post validated","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook postValidated","href":"/api-reference/webhooks-events/post-validated"},{"title":"Post deleted","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook postDeleted","href":"/api-reference/webhooks-events/post-deleted"},{"title":"Scheduled post pushed","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook scheduledPostPushed","href":"/api-reference/webhooks-events/scheduled-post-pushed"},{"title":"Feedback result created","version":null,"deprecated":null,"openapi":"/assets/openapi/openapi-bundled.yaml webhook feedbackResultCreated","href":"/api-reference/webhooks-events/feedback-result-created"}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/guides/mcp/overview"}]},{"tab":"Changelogs","pages":[{"title":"Changelogs","href":"/changelogs/api/changelogs"}]}]},"basePath":"","title":"Send a feedback email campaign - Partoo API","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}