The mailbox every letter is sent from: the session links, the day, the check-in codes and the bulk sends.
Microsoft 365 caps this at 30 messages a minute and that cap cannot be raised. Three seconds is 20 a minute, comfortably under; two is exactly 30, which is sitting on the limit.
Sent through GoHighLevel, on the same Private Integration this tool already reads contacts with.
GoHighLevel texts a contact, not a number. Its send endpoint takes a contact id and nothing else names a recipient, so a number belonging to nobody in the account cannot be texted at all. That is their API rather than a choice made here. Everybody who registered is already a contact; somebody who did not is not.
The token needs one more scope.
conversations/message.write, which is a separate tick box
from the contact ones. A token without it reads contacts perfectly well
and cannot send, and the refusal arrives as a 401 that says nothing
about scopes, so the test below says it for you.
The number texted is the one in the Directory. Send text on the registrations page reads it off the roster record at the moment the text goes out, so a number corrected while a run is going is the one that gets it. Somebody with no number there is skipped and named rather than counted as sent.
There is no 10DLC wall here, which is why this replaced Twilio: GoHighLevel’s own numbers are already registered. Sending from an unregistered number of your own would have taken 10–15 days for campaign approval.
No account or key to enter: the texts go out on the GoHighLevel credentials below.
Only where the location has more than one number. Leave it empty and GoHighLevel picks the location’s own.
{name} (first name), {full} (title, first and last), {link} (their own page) and {qr-code} (that page, opened on their check-in QR) are filled in per person. Keep it short: a text over 160 characters is billed as several.
Set on the server with deploy/set-ghl.sh. It is read-only here because its token can read every contact in the account, which is a different kind of secret from a mailbox password.
GoHighLevel’s API cannot read a smart list, so until a tag is named here the dinner column falls back to what people picked on the two registration forms — which misses everybody added to the list by hand or by import. Put the tag on everyone in the list with one workflow action, name it here, and every dinner figure becomes that list exactly.
Everything above belongs to the installation and is shared by every conference on it. These two belong to the open conference alone, and changing them changes nothing anywhere else.
One per line, in the order you want them. These are the tick boxes on every record, the filter on the directory and the words a letter uses about somebody. Taking one out does not take it off anybody already filed under it — their record keeps it, and it comes back if you put the word back.
Unticks the first on every record that has it and ticks the second, and renames the category on the list above to match. Somebody who already holds both just loses the duplicate. Nothing else on their record is touched.
Same again, for the networks on a record, a badge and a session tag. A network this tool has no colour for is given one of its own, worked out from its name, so it looks the same everywhere.
The only honest check is a message that arrives.