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

# Configuring Invites

> Who sets up each part of Omneo Invites, the options you can tune, the email template contract, and the Profile Portal settings involved.

Before Omneo enables Invites for your tenant, decide where referrers will send invites (Profile Portal, your own website, or both) and where invitees will join (Profile Portal or your own website). Those two decisions determine who owns each item below.

## Who sets up what

| Item                                                                               | Owner                       | Notes                                                                                                               |
| ---------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Enabling the Invites service for your tenant, in staging and production            | Omneo                       | Ask your account manager. Omneo confirms the base URLs once the service is live.                                    |
| Tenant configuration: sender, template IDs, join URL, identity handle, quota rules | Omneo                       | You supply the values. Omneo applies them.                                                                          |
| Invite Definitions: period, maximum invites, campaign window, default statuses     | Omneo                       | See [Configuration options](#configuration-options).                                                                |
| Per-profile quota overrides                                                        | Omneo                       | On request, for VIPs or testing.                                                                                    |
| Machine token for server-to-server accept calls                                    | Omneo                       | Only needed when your own website performs the accept instead of Profile Portal.                                    |
| Profile Portal wiring: join accept, refer page, invite block, copy                 | Omneo                       | You supply the copy.                                                                                                |
| Referral Reactions                                                                 | Omneo, with you             | Agree the incentive and timing first. See [Referral incentives](/experiences/invites/overview#referral-incentives). |
| Opt-out reversals and invite lookups for support                                   | Omneo                       | Log invite IDs on your side so support can trace them.                                                              |
| SendGrid account, API key, verified sender address and sender name                 | Your brand                  | The invitation is sent from your SendGrid account.                                                                  |
| Invitation email template design and copy                                          | Your brand                  | Built as a SendGrid dynamic template. See [Email template](#email-template).                                        |
| Incentive design: what the referrer and invitee receive, and when                  | Your brand                  |                                                                                                                     |
| Omneo API token for your backend, scoped to `read-profiles` and `read-identities`  | Omneo, or you in CX Manager | Only needed for a website integration. See [API tokens](/dev-guides/core-setup/api-tokens).                         |
| Omneo ID tokens, one per referrer                                                  | Your developer              | Self-service, minted by your backend. See [Using Omneo ID](/dev-guides/frontend/omneo-id).                          |
| Referral form, backend handler, and on-site messaging                              | Your developer              | See [Integrating Omneo Invites](/dev-guides/frontend/invites-plugin).                                               |

## Configuration options

Omneo applies these settings for you. Tell your account manager the values you want.

| Option                   | What it controls                                                                                                                          | Default                       |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| Invite period            | Days from creation until an invite expires, measured to the end of that day. Leave unset for invites that never expire.                   | Set per definition            |
| Maximum invites          | How many invites each referrer can send under a definition. Leave unset for unlimited.                                                    | Set per definition            |
| Campaign window          | Start and end dates for a definition. Outside the window, referrers cannot create invites.                                                | None                          |
| Status-based definitions | Map each profile status to a definition, so different statuses receive different quotas. Or use one default definition for every profile. | One default definition        |
| Default statuses         | Statuses applied to the invitee's profile when they join through an invite.                                                               | None                          |
| Join URL                 | The page invitees land on. Usually your Profile Portal join page.                                                                         | Required                      |
| Identity handle          | The identity handle Omneo links the invitee's external ID under at accept. Fixed once invites are in flight.                              | Required                      |
| Resend limit             | Maximum number of times a referrer can resend one invitation.                                                                             | 3                             |
| Sender name              | The from name on invitation emails.                                                                                                       | Invites Team                  |
| Email branding           | Hero image URL, logo URL, and logo widths for mobile and desktop, passed to your template.                                                | 150 px and 160 px logo widths |

Configuration changes can take up to an hour to apply.

## Email template

Omneo sends the invitation through SendGrid using a dynamic template you own. The template receives these merge variables:

| Variable                                                                                    | Content                                                                                   |
| ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `inviteId`                                                                                  | The invite's UUID. Build your join link from this.                                        |
| `sourceFirstName`                                                                           | The referrer's first name.                                                                |
| `recipientFirstName`                                                                        | The invitee's first name, capitalised.                                                    |
| `recipientEmail`                                                                            | The invitee's email address.                                                              |
| `publicMessage`                                                                             | The referrer's optional personal message, or empty.                                       |
| `expiresAt`                                                                                 | The expiry date formatted as `18th January 2026`, or empty when the invite never expires. |
| `declineUrl`                                                                                | A link that marks this invite `DECLINED`.                                                 |
| `optoutUrl`                                                                                 | A link that opts the address out of all future invitations.                               |
| `domain`                                                                                    | The Invites service URL.                                                                  |
| `logo`                                                                                      | An object with `url`, `width_mobile`, and `width_desktop` from your branding settings.    |
| `sendgridHeroUrl`, `sendgridLogoUrl`, `sendgridLogoWidthMobile`, `sendgridLogoWidthDesktop` | The same branding values as flat fields.                                                  |

Build the call to action from `inviteId` and `recipientEmail` so the join page can pre-fill the address:

```text theme={null}
https://[portal]/join?invite_id={{inviteId}}&email={{recipientEmail}}
```

Include `declineUrl` so invitees can decline without opting out.

<Warning>
  `optoutUrl` is a one-click, permanent action with no confirmation step. Any tool that pre-fetches links in email, such as a security scanner, will trigger it. Omit the link, or place it where automated tooling is unlikely to follow it, and make sure your own email tooling does not pre-fetch links in Omneo's invitation emails.
</Warning>

## Profile Portal

When invitees join through Profile Portal, Omneo enables the following in your portal configuration:

| Feature                | What it does                                                                                                               | Enabled by                            |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| Join accept            | The join page reads `invite_id` from the URL and, after the profile is created, tells Invites the invitation was accepted. | Omneo, in the portal's join settings  |
| Refer and invite pages | Standalone pages where a signed-in profile sends invites and sees remaining quota.                                         | Omneo, on request                     |
| Loyalty invite block   | A block on the loyalty page with the same send form.                                                                       | Omneo, on request                     |
| Home block             | An invites block on the portal home screen.                                                                                | Omneo, on request                     |
| Copy                   | Headings, descriptions, and button text for the refer and invite surfaces.                                                 | You supply the copy, Omneo applies it |

The join accept runs after the profile is created. If it fails because the invite has expired or the email does not match, the profile is still created and the invitee sees no error. Only the referral credit is lost.

See [Configuring Profile Portal](/experiences/profile-portal/configuration) for the rest of the portal setup.

## Behaviour to plan around

* The invitation email is sent while the create request is in progress, so a create call takes as long as email delivery.
* A referrer's status change, such as a tier upgrade that unlocks more invites, can take up to five minutes to affect their quota.
* The first invite accepted for an email address wins. Other pending invites to the same address are marked `DECLINED`.
* Email address is the matching key at accept. Pre-filling the address on the join link is what makes this reliable.
* Invites past their expiry date are refused at accept, but their `status` field is not automatically changed to `EXPIRED`.

See [Omneo Invites](/experiences/invites/overview) for what the service does and [Integrating Omneo Invites](/dev-guides/frontend/invites-plugin) for the developer guide.
