recipient.viewed

The recipient opened their claim link for the first time.

Triggered when the recipient opens their claim link for the first time. It fires once, and re-opening does not re-emit.

Body

The GIFQ envelope plus the wallet balance. subject_type is "recipient" and status is "viewed".

🚧

payout_type is often null on this event

This is the one event that reliably arrives before the recipient has chosen a payout method. On a campaign offering both crypto and gift cards, payout_type is null here and resolves on later events.

Do not branch on payout_type being non-null, and do not treat null as an error.

At this point remaining_amount always equals initial_amount, since nothing has been redeemed yet.

Example

{
  "event": "recipient.viewed",
  "payout_order_uuid": "11111111-2222-3333-4444-555555555555",
  "recipient_email": "[email protected]",
  "recipient_uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "recipient_name": "Alice Doe",
  "subject_type": "recipient",
  "status": "viewed",
  "updated_at": "2026-05-21T10:00:00Z",
  "payout_type": null,
  "initial_amount": 75.0,
  "remaining_amount": 75.0,
  "currency": "GBP",
  "sent_at": "2026-05-20T09:00:00Z",
  "viewed_at": "2026-05-21T10:00:00Z",
  "expires_at": "2026-08-20T09:00:00Z"
}

What to do on receipt

  • The claim link works and the recipient is engaged. Use this as the signal to stop sending reminder emails.
  • Nothing has been redeemed. Do not credit or debit anything.
  • viewed_at in the body equals updated_at on this event, and stays on every later recipient event.
  • This event does not guarantee a redemption follows. Expect a meaningful share of recipients to view and never redeem, ending at recipient.expired.