---
title: "Set Attribution"
method: POST
path: "/v1/me/attribution"
tags: ["me"]
---

# Set Attribution

`POST /v1/me/attribution`

## Request

- Base URL: `https://api.ctindex.io`
- URL: `https://api.ctindex.io/v1/me/attribution`
- Auth: none declared

Write-once first-touch signup attribution.

The email/password signup path stores ``signup_source`` directly on
the INSERT (``POST /v1/auth/signup``), but the Google OAuth flow
never sends a JSON body — so the portal calls this once after the
first authenticated page load, forwarding whatever UTM/referrer it
stashed in localStorage when the visitor first landed.

Guards:
  * Only fills NULL columns — a later visit with different UTM tags
    can never overwrite the original acquisition channel.
  * Values are trimmed and length-capped server-side.

## Cookies

- `ctix_session` string, nullable

## Request body

- AttributionRequest
  - `source` string, nullable
  - `referrer` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ctindex/apis/certindex-api.md) · [All operations](https://skmtc.dev/ctindex/apis/certindex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ctindex/apis/certindex-api/revisions/d5bc0ec85bc9?raw)
