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

# Webhooks

> Receba notificações em tempo real para eventos de assinatura e pagamento.

## Visão geral

Alana Shopping envia eventos de webhook para mudanças de cobrança e assinatura via Stripe. Sua aplicação pode escutar esses eventos para automatizar fluxos de trabalho.

## Eventos suportados

| Evento                          | Descrição                                            |
| ------------------------------- | ---------------------------------------------------- |
| `checkout.session.completed`    | Cliente completou uma sessão de checkout             |
| `customer.subscription.created` | Nova assinatura criada                               |
| `customer.subscription.updated` | Plano de assinatura alterado, renovado ou modificado |
| `customer.subscription.deleted` | Assinatura cancelada                                 |
| `invoice.paid`                  | Pagamento de fatura bem-sucedido                     |
| `invoice.payment_failed`        | Falha no pagamento da fatura                         |

## Segurança de webhook

Todos os payloads de webhook são assinados pelo Stripe. Sempre verifique a assinatura antes de processar:

```javascript theme={null}
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

export async function POST(request) {
  const body = await request.text();
  const signature = request.headers.get('stripe-signature');

  const event = stripe.webhooks.constructEvent(
    body,
    signature,
    process.env.STRIPE_WEBHOOK_SECRET
  );

  // Processar o evento verificado
  switch (event.type) {
    case 'customer.subscription.updated':
      // Atualizar plano do workspace
      break;
    case 'invoice.payment_failed':
      // Notificar owner do workspace
      break;
  }
}
```

<Warning>
  Nunca processe eventos de webhook sem verificar a assinatura do Stripe. Webhooks não verificados podem ser falsificados por atores maliciosos.
</Warning>

## Política de retry

Stripe tenta novamente entregas de webhook falhadas com backoff exponencial por até 3 dias. Garanta que seu endpoint retorne um código de status `200` prontamente para evitar retentativas.
