Send Luma Invites
send_luma_invitesLuma emails each recipient an invite to the event and adds them to the
roster as invited. This is a real send with no approval step and no
undo — treat calling it as sending, and confirm the recipient list with
the user first unless they have already approved this exact wave.
Distinct from the LinkedIn/email outreach queues: those are Sliq-sent cold sequences with pacing and approval gating, whereas this is Luma's branded event invite from the calendar the user owns. Use the queues to pitch the event to people who don't know it exists; use this to invite people who should land directly on the event's guest list.
Anyone already on the roster — invited, going, pending approval, waitlisted, or declined — is skipped, so re-running with the same list invites only the genuinely new people. That makes retries safe.
Every invite is recorded against the matching person Sliq tracks (under
data['luma_invites'], one entry per event), so who-we-invited is
answerable from our own records and not only from Luma's roster.
Recipients Sliq isn't tracking are still invited — they just get no such
record, which means an RSVP from them won't appear in the funnel. That is normal (hand-typed addresses, people who were
never prospects), and most waves have some, but the user can't see it
from Luma's side. When not_tracked is non-empty, say so in the reply
— how many, and which addresses — instead of reporting a clean send.
A summary dict
{event_id, invited: [...], invited_count, skipped: [{email, reason}],
skipped_count, tracked_count, not_tracked: [...], not_tracked_count}
— plus note, user-facing wording for the untracked recipients,
present only when there are any. invited lists the addresses
actually sent to; a fully-deduplicated call returns invited_count 0
and is a success, not an error. tracked_count counts recipients
Sliq already knows; it is lower than invited_count whenever the wave
includes people who aren't tracked.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | Recipient email addresses. Deduplicated case-insensitively, then filtered against the live roster. | |
| message | No | Optional personal note included in the invite email, max 200 characters. Written for the whole wave — Luma has no per-recipient placeholder substitution here, so don't try to personalize it with names. | |
| event_id | Yes | The Luma event id from get_luma_events (starts with "evt-"). |