---
title: "Submit native non-Purchase events using a signed public surface context"
method: POST
path: "/v3/public/google-ads/events"
tags: ["Analytics Setup"]
---

# Submit native non-Purchase events using a signed public surface context

`POST /v3/public/google-ads/events`

## Request

- Base URL: `https://api.scalev.com`
- URL: `https://api.scalev.com/v3/public/google-ads/events`
- Auth: none required

Separate from first-party analytics ingestion. The token binds the current page or store, configured destinations, trigger selections and their revision. If the configuration changes, intake returns tracking_configuration_changed (409) and the page must reload; token renewal preserves the original mappings. Purchase and arbitrary Google targets are rejected. Batches are limited to 20 events and 32 KiB of event data, with per-business and per-IP limits. Tokens expire after seven days; renewal requires a valid original signature no older than 30 days and current assignments. Acceptance is not ingestion or attribution confirmation.

## Request body

- object
  - `token` string, required
  - `refresh_context` boolean: Request a fresh token instead of submitting events.
  - `privacy` object: Current visit policy token and recipient choices.
  - `events` object[]
    - `event_id` string, uuid, required
    - `event_name` string: Legacy mapping name, or the selected Google action's display name. New callers use action_id with context and trigger.
    - `destination_id` string, uuid
    - `action_id` string
    - `context` string: Signed page, flow step, or store interaction context.
    - `trigger` string: Configured non-Purchase interaction key.
    - `value` number
    - `currency` 'IDR'
    - `gclid` string
    - `gbraid` string
    - `wbraid` string
    - `customer_email` string: Optional actual customer email, normalized and hashed before Google delivery; requires applicable permission.
    - `customer_phone` string: Optional actual customer phone, normalized and hashed before Google delivery; requires applicable permission.

## Response `202`

Accepted for managed delivery, or a renewed signed context

- object
  - `accepted` boolean
  - `token` string

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `409`: The signed conversion mappings changed. Reload the page before sending another interaction.
- `429`: Tracking rate limit reached
- `503`: Tracking temporarily unavailable

## Changes

- **2026-11-03** `6b9152f04622`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/scalev/apis/nexus-commerce-api/changes/v3/public/google-ads/events/post.md)

---

[API](https://skmtc.dev/scalev/apis/nexus-commerce-api.md) - [All operations](https://skmtc.dev/scalev/apis/nexus-commerce-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scalev/apis/nexus-commerce-api/revisions/6b9152f04622?raw)
