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

# Liberação de acesso

> Evento para dar acesso ao comprador na sua área de membros ou plataforma de cursos depois da venda aprovada.

| Evento | Disparado quando |
| - | - |
| `release_access` | Uma venda de produto é aprovada e o comprador precisa receber acesso ao conteúdo. |

Use este evento quando você entrega o conteúdo numa plataforma própria ou de terceiros. Ele chega logo depois do `transaction_paid` da mesma venda, num formato pensado para área de membros: o produto, a oferta comprada e quem comprou.

> [!NOTE]
>
> Assine `release_access` no cadastro do webhook, junto com os outros eventos. Venda sem produto, como uma cobrança criada direto pela API, não gera este evento.

## `release_access`

```json theme={"system"}
{
  "type": "customer.member_added",
  "event": {
    "product": {
      "id": "clxproduct123",
      "name": "Curso de Tráfego"
    },
    "products": [
      {
        "id": "clxproduct123",
        "name": "Curso de Tráfego",
        "offers": [
          {
            "id": "plano-anual",
            "name": "Plano anual",
            "cohorts": []
          }
        ]
      }
    ],
    "lastInvoice": {
      "id": "clxabc123def456",
      "type": "sell",
      "status": "paid",
      "currency": "BRL",
      "paymentMethod": "credit_card",
      "companyId": "clxcompany123",
      "customer": {
        "id": "clxcustomer123",
        "name": "Maria Silva",
        "email": "maria@email.com",
        "phone": "+5511999998888",
        "document": "12345678909",
        "documentType": "cpf",
        "purchasesUrl": "https://app.ephra.io/compras"
      }
    },
    "access": {
      "magicLink": "https://..."
    }
  }
}
```

### Campos

**type** `string`

Sempre `customer.member_added`.

**event.product** `object`

O produto da venda: `id` e `name`.

**event.products** `array`

O mesmo produto em formato de lista, com as ofertas compradas.

**campos**

**offers\[].id** `string`

O identificador da oferta na URL do checkout (o slug), não o ID numérico.

**offers\[].name** `string`

Nome da oferta.

**offers\[].cohorts** `array`

Turmas da Memberkit ligadas ao produto, cada uma com `id`. Vem vazio quando o produto não usa Memberkit.

**event.lastInvoice** `object`

A venda que liberou o acesso: `id` (o mesmo `transaction.id` dos eventos de transação), `type` (`sell`), `status` (`paid`), `currency` (`BRL`), `paymentMethod`, `companyId` e o comprador em `customer`, com o link `purchasesUrl` de **Minhas compras**.

**event.access** `object`

Presente apenas quando a entrega gera um link de acesso direto. Hoje só a área de membros Ephra Club gera.

Na área de membros nativa da Ephra, o acesso vem pelo link de **Minhas compras**, em `event.lastInvoice.customer.purchasesUrl`. O comprador entra com um código enviado por e-mail e clica em **Acessar área de membros**. Nenhuma credencial vai no payload.

**campos**

**access.magicLink** `string`

Link que leva o comprador direto para dentro da área de membros, sem senha.

> [!WARNING]
>
> O `magicLink` é uma credencial: quem tiver o link entra como o aluno. Envie só para o comprador, não grave em log e não repasse para ferramentas de terceiros.

## Como usar

**1. Identifique o produto**

Use `event.product.id` para saber qual curso ou conteúdo liberar.

**2. Crie ou ative o aluno**

Use `event.lastInvoice.customer.email` como chave do aluno na sua plataforma.

**3. Seja idempotente**

Use `event.lastInvoice.id` para não liberar o mesmo acesso duas vezes se o evento chegar de novo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.