> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metrito.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook de Pedido

> Webhook genérico para receber eventos de pedido/transação de qualquer plataforma de checkout, ERP ou sistema customizado.

O parâmetro `k` na query string identifica e autentica a requisição. Nenhum header `Authorization` é necessário.

O Metrito irá:
- Fazer **upsert** do registro da transação usando `transaction.id` como chave única
- **Detectar o tipo de evento** automaticamente pelo campo `status`
- **Disparar conversão de Compra** para a Meta Conversion API quando `status = "approved"`
- **Associar a transação a um lead rastreado** via UTM, e-mail ou telefone


## Autenticação

O parâmetro `k` na query string identifica e autentica a requisição.

**Onde encontrar sua chave:** No painel do Metrito, acesse **Conexões → Adicionar Conexão → Personalizado**. A URL completa do webhook (incluindo seu `k`) é exibida após a criação.

## Valores Monetários

Todos os valores monetários devem ser enviados como **inteiros em centavos**.

| Campo                          | Exemplo (BRL) | Valor Correto |
| ------------------------------ | ------------- | ------------- |
| `transaction.value`            | R\$ 199,80    | `19980`       |
| `transaction.commission_value` | R\$ 29,97     | `2997`        |

## Status de Transação

| Valor        | Dispara Compra Meta? |
| ------------ | -------------------- |
| `pending`    | Não                  |
| `approved`   | **Sim**              |
| `failed`     | Não                  |
| `refunded`   | Não                  |
| `chargeback` | Não                  |


## OpenAPI

````yaml /openapi/tracking.yaml post /v2/tracking/generic
openapi: 3.1.0
info:
  title: API de Rastreamento — Metrito
  version: '3.0'
  description: >
    API para envio de eventos de rastreamento, gerenciamento de gatilhos
    (triggers) e webhooks de transação.


    ## Conceitos


    - **Container** — O contêiner de rastreamento vinculado a um domínio.

    - **Gatilho (Trigger)** — Uma *configuração* que define quando e como uma
    conversão deve ser disparada (tipo de disparo, mapeamento Meta, condições).
    Recurso CRUD.

    - **Evento** — Um *dado de rastreamento* enviado em tempo real: "usuário
    visualizou página X", "usuário comprou Y". Transitório, processado via fila.


    ## Infraestrutura


    - Rate limiting via `X-RateLimit-*` headers

    - Request ID via `X-Request-Id` em todas as respostas

    - `Idempotency-Key` suportado em POSTs de criação e ingestão
servers:
  - url: https://api.metrito.com
    description: Produção
security:
  - bearerAuth: []
  - apiKeyAuth: []
paths:
  /v2/tracking/generic:
    post:
      summary: Webhook de pedido/transação
      description: >
        Webhook genérico para receber eventos de pedido/transação de qualquer
        plataforma de checkout, ERP ou sistema customizado.


        O parâmetro `k` na query string identifica e autentica a requisição.
        Nenhum header `Authorization` é necessário.


        O Metrito irá:

        - Fazer **upsert** do registro da transação usando `transaction.id` como
        chave única

        - **Detectar o tipo de evento** automaticamente pelo campo `status`

        - **Disparar conversão de Compra** para a Meta Conversion API quando
        `status = "approved"`

        - **Associar a transação a um lead rastreado** via UTM, e-mail ou
        telefone
      operationId: sendWebhook
      parameters:
        - name: k
          in: query
          required: true
          description: >-
            Chave de conexão obtida no painel do Metrito ao criar uma conexão
            "Personalizado"
          schema:
            type: string
            example: abc123def456
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPayload'
            examples:
              minimal:
                summary: Payload mínimo
                value:
                  transaction:
                    id: order_0987654321
                    status: pending
                    commission_currency: BRL
                    commission_value: 9990
                    created_at: '2024-06-15T10:00:00Z'
                    updated_at: '2024-06-15T10:00:00Z'
              approved_with_utm:
                summary: Transação aprovada com UTM
                value:
                  transaction:
                    id: order_1234567890
                    status: approved
                    currency: BRL
                    value: 19980
                    commission_currency: BRL
                    commission_value: 17982
                    created_at: '2024-06-15T13:00:00Z'
                    updated_at: '2024-06-15T13:02:45Z'
                    customer:
                      name: João Silva
                      email: joao.silva@email.com
                      phone: '+5511987654321'
                    products:
                      - id: prod_mentoria_basica
                        product_name: Mentoria Online - Plano Básico
                        quantity: 1
                        value: 19980
                    payment:
                      method: credit_card
                      installments: 3
                  utm:
                    source: facebook
                    medium: cpc
                    campaign: '120215678901234567'
                    mlid: ldr_xk7mq2n9p4
      responses:
        '200':
          description: Webhook aceito e enfileirado para processamento
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
              example:
                success: true
        '400':
          description: Erro de validação, chave ausente ou inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missingKey:
                  summary: Chave ausente
                  value:
                    message: Missing key parameter. (query k)
                validationError:
                  summary: Erro de validação
                  value:
                    message: Validation Error.
                    errors:
                      transaction.commission_currency: String must contain exactly 3 character(s)
      security: []
components:
  schemas:
    WebhookPayload:
      type: object
      required:
        - transaction
      properties:
        transaction:
          type: object
          required:
            - id
            - status
            - commission_currency
            - commission_value
            - created_at
            - updated_at
          properties:
            id:
              type: string
            status:
              type: string
              enum:
                - pending
                - approved
                - authorized
                - failed
                - refunded
                - chargeback
                - under_analysis
            commission_currency:
              type: string
              pattern: ^[A-Z]{3}$
            commission_value:
              type: integer
              minimum: 0
            created_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
            value:
              type: integer
              minimum: 0
            currency:
              type: string
            customer:
              type: object
              properties:
                name:
                  type: string
                email:
                  type: string
                phone:
                  type: string
            products:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  product_name:
                    type: string
                  quantity:
                    type: integer
                  value:
                    type: integer
            payment:
              type: object
              properties:
                method:
                  type: string
                  enum:
                    - credit_card
                    - bank_slip
                    - pix
                    - paypal
                    - free
                    - unknown
                installments:
                  type: integer
        utm:
          type: object
          properties:
            source:
              type: string
            medium:
              type: string
            campaign:
              type: string
            mlid:
              type: string
              description: >-
                Metrito Lead ID — identificador de sessão do script de
                rastreamento
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - authentication_error
                - authorization_error
                - validation_error
                - rate_limit_error
                - not_found_error
                - api_error
            code:
              type: string
            message:
              type: string
            request_id:
              type: string
              nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT or API Key
      description: JWT da plataforma ou API key `mtk_live_...`
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key `mtk_live_...` via header `x-api-key`

````