Google Ads ACTION
Add Contact to Customer List by Email
Adds one or more contacts to a Google Ads Customer Match user list by email. Accepts an array of email addresses and batches them all into a single offline user data job (one lookup to confirm the target list is a Customer Match list + one create + one addOperations + one run = exactly 4 API calls per run regardless of list size). Emails are normalized (trimmed, lowercased; Gmail/Googlemail addresses additionally have dots removed from the local part and plus-suffixes stripped) before SHA-256 hashing so they match Google's expected Customer Match hash. Lists typically update in 6 to 12 hours after the operation. Use List User Lists to find a valid Customer List ID and confirm it's a Customer Match (
CRM_BASED) list before calling this action. See the documentation- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Google Ads account once, then configure and run Add Contact to Customer List by Email from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "google_ads-add-contact-to-list-by-email",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
google_ads: { authProvisionId: "apn_xxxxxxx" },
accountId: "Use Google Ads As",
customerClientId: "Managed Account",
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "google_ads-add-contact-to-list-by-email",
"configured_props": {
"google_ads": { "authProvisionId": "apn_xxxxxxx" },
"accountId": "Use Google Ads As",
"customerClientId": "Managed Account"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "google_ads",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "google_ads-add-contact-to-list-by-email",
arguments: {
accountId: "Use Google Ads As",
customerClientId: "Managed Account",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
accountId Use Google Ads As | string | The ID of an account of a customer directly accessible by the authenticated user. This is usually a Manager Account, used as login-customer-id (e.g., 1234567890). Use the List Account ID Options action to get the list of accessible accounts. Required Dynamic |
customerClientId Managed Account | string | The ID of a customer client from the list of customers linked to the selected account (e.g., 1234567890). Use the List Customer Clients action to get the list of customer clients. Optional Dynamic |
emails Email Addresses | string[] | Array of email addresses to add to the Customer Match list, e.g. [" Test.User+promo@Gmail.com ", "ALICE@EXAMPLE.COM"]. Each is normalized before hashing: whitespace is trimmed and the address is lowercased for all domains; for Gmail/Googlemail addresses (gmail.com, googlemail.com), dots are also removed from the local part and any +suffix is stripped. All emails are submitted in one batched job. Google caps a single AddOfflineUserDataJobOperations request at 100,000 identifiers; arrays larger than that are rejected — split into multiple calls instead. Required |
userListId Customer List ID | string | The numeric Customer List (user list) ID to add the contacts to, e.g. 98765432. Run List User Lists first to find valid IDs and confirm the target list's type is CRM_BASED (Customer Match) — this action rejects any other list type. Required |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- google_ads-add-contact-to-list-by-email
- Version
- 1.0.0
- App
- Google Ads
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗