Manna

Outbound bot setup

Each bot's URL, what its message says, what to map, and what can be deleted. Work top to bottom.

Why some fields have odd names

WotNot have confirmed it: when an outbound bot maps a value to a contact variable, it is written to the contact record of whoever is in the phone field, overwriting whatever was there.

An alert goes to the pastor but is about a member. So mapping a member's name into first_name writes it onto the pastor's record, replacing their own, every send. Hence bday_first_name and visitor_first_name. They are not clutter, they are what keeps two people's records apart.

Where a message is about its own recipient, like the birthday wish, the plain name is correct.

Edit, do not delete and rebuild

Each URL below identifies one bot and never changes while that bot exists. Manna is wired to these exact addresses.

So if a bot is named or mapped wrongly, open it by its URL and correct it. Deleting and recreating gives a different URL, which breaks the wiring on our side and needs a code change to fix.

These URLs each trigger a real, charged send. Keep this page private.

1Fix these eight first

Some of these overwrite somebody's record or send the message to the wrong person. The rest are Meta rules: a body may not begin or end on a variable, and two variables may never sit side by side with nothing between them. Do these before wiring anything.

TemplateChange thisTo thisWhy
Birthday alertfirst_name and last_name→bday_nameTwo variables side by side, which Meta rejects. One field holding the full name fixes it and stops the recipient's own name being overwritten.
Visitor alertname and visitor_last_name→visitor_nameSame, two names side by side. One field. name is also MChat's own system field and must never be used.
Visitor alertPhone→visitor_whatsappphone decides who receives the message. Left as is, the alert goes to the visitor instead of the team.
Need alertheading in the body→heading as a text HEADERA body may not start on a variable. Moving heading to the header component fixes it.
Need alertclosing_line at the bottom→closing_line moved upIt sat directly against what_they_shared with nothing between, which Meta rejects. It now follows the opening line, which also reads better since a crisis note appears early rather than buried.
Teach nudgetheme_line and reflection_or_heart_line→teaching_thoughtTwo variables side by side. One field.
Need alertthe closing line, Please reach out to them→remove itThe closing_line variable already ends with an instruction to reach out, so the fixed footer said it twice. The variable is the one that changes with urgency, so the fixed line goes.
Event full, to the member{event_capacity}}→({event_capacity})The closing bracket is missing, which breaks the message.

2Wire each outbound bot

Each box gives the bot's URL so you find the right one, the message with its variables in place, then what to map on the trigger block. Left is what Manna sends, right is the MChat contact variable. They match on purpose.

phone is always first, and always the recipient

phone is not part of the message, which is why it appears in none of the wording below. It tells MChat which contact this run belongs to, which decides both who receives the WhatsApp and whose record everything else is written to.

Never map anything else into phone. A member's number there sends the alert to the member instead of the team, and creates a contact for them.

Where a message is about somebody else, their number goes in its own field, member_phone or visitor_whatsapp, and is printed inside the message so the team can reach them.

Birthday wishabout the recipienttemplate welcome_hbd · goes to the member having the birthday
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/kack7j2NkAde091319016786YO3fHjjJ
The message body
Happy birthday, first_name

Today the whole church_name family is celebrating you.

We thank God for your life, and we are praying that this new year overflows with His goodness and peace.

Have a beautiful day. You are known, loved, and prayed for.
Manna sendsMap toSample value for Meta
phone→phone27828565536the member. This decides who receives it.
first_name→first_nameThandekasafe, the message is about its own recipient
church_name→church_nameGrace Community
Birthday alertabout someone elsetemplate welcome_reminder · goes to the church team
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/6w8cvD7ywvTc09161595282063EIcTuE
The message body
Birthday Today

Good morning from Manna.

bday_name celebrates their birthday today.

A warm birthday wish has already been sent to them at 8:00 on behalf of church_name.

WhatsApp: member_phone

A personal message or call from you would make it extra special.
Manna sendsMap toSample value for Meta
phone→phone27828565536the team member. This decides who receives it.
bday_name→bday_nameThandeka MokoenaCHANGED. Was first_name and last_name side by side, which Meta rejects. Now one field.
church_name→church_nameGrace Community
member_phone→member_phone27821234567the birthday person's number, printed in the message
Visitor alertabout someone elsetemplate v3_welcome_alert · goes to the church team
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/TXUAJfGGiNEf081223643506Ktd0b2Oo
The message body
New Visitor Notification, church_name

A new visitor has registered through Manna.

Name:
visitor_name

WhatsApp:
visitor_whatsapp

Birthday:
visitor_birthday

How can we help them feel more connected:
visitor_help_now

Please reach out and welcome them personally.
Manna sendsMap toSample value for Meta
phone→phone27828565536the team member. This decides who receives it.
church_name→church_nameGrace Community
visitor_name→visitor_nameThandeka MokoenaCHANGED. Was two name fields side by side, which Meta rejects. Now one field.
visitor_whatsapp→visitor_whatsapp27821234567the visitor's number, printed in the message
visitor_birthday→visitor_birthday14 March 1992
visitor_help_now→visitor_help_nowPrayer or pastoral care, Join a Life Group
Need alertabout someone elsetemplate need_alert · goes to whoever the category routes to
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/sDorfacFpgeH093344951823a6s9wQIe
Text header, above the message

This template has a text header as well as a body. The header holds one variable, heading.

Sample value: New request. On a crisis it carries Urgent care needed instead, which is what makes an urgent alert look different in a notification list.

The header exists because a message body is not allowed to begin with a variable.

The message body
Someone at church_name has reached out for support.

closing_line

Name:
member_name

WhatsApp:
member_phone

What they shared, in their own words:
what_they_shared

Thank you.
The Respond button

Add a Visit Website button labelled Respond.

URL: https://reply.getmanna.ai/{{1}}

Bind the button's variable to member_phone. Sample value for submission: 27821234567.

The button cannot link to wa.me directly, Meta rejects that. reply.getmanna.ai forwards to the member's chat, so tapping Respond opens a conversation with them.

Manna sendsMap toSample value for Meta
phone→phone27828565536the recipient. This decides who receives it.
heading→headingNew requestHEADER, not body. A text header, so the body does not start on a variable.
church_name→church_nameGrace Community
closing_line→closing_lineThis came through as a request for prayer.MOVED UP, it used to sit against what_they_shared, which Meta rejects.
member_name→member_nameThandeka Mokoenasafe, nothing inbound writes this
member_phone→member_phone27821234567the member's number, printed in the message
what_they_shared→what_they_sharedPlease pray for my mother, she is in hospital
Quarterly care reporttemplate Quarterly_care_report · goes to the report recipients
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/5uW24owZx5XP100658313011YbYzNgpw
The message body
Care report

church_name, period.

number_of_people

Most common: most_common_themes

Every one of them was responded to at the time. This is the pattern view only. No names and no details are kept in it.
Manna sendsMap toSample value for Meta
phone→phone27828565536the recipient. This decides who receives it.
church_name→church_nameGrace Community
period→periodthe last three months
number_of_people→number_of_people23 people reached out for care
most_common_themes→most_common_themesfamily and health
Event full, to the teamtemplate v3_event_full · goes to the church team
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/5eKEaNTrMwhf091204726113onlDtfsd
The message body
Event full, church_name

Wonderful news. The event_name has filled up, capacity_phrase spots taken.

Anyone else who tries to join from here is counted, so your weekly report will show you the demand you could not see before.
Manna sendsMap toSample value for Meta
phone→phone27828565536the recipient. This decides who receives it.
church_name→church_nameGrace Community
event_name→event_nameMen's Breakfast
capacity_phrase→capacity_phrase40
Weekly events reporttemplate v3_event_weekly_report · goes to the church team
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/5BPUtWB464ch0918080288676jrFERYi
The message body
Weekly events report, church_name

Your week at a glance: events_phrase, signups_phrase.

Reply to this message and Manna will walk you through the details, sign-up lists, contact numbers, and who tried to join after an event filled.
Manna sendsMap toSample value for Meta
phone→phone27828565536the recipient. This decides who receives it.
church_name→church_nameGrace Community
events_phrase→events_phrase3 events
signups_phrase→signups_phrase41 sign-ups
Event full, to the memberabout the recipienttemplate v3_event_full_to_member · goes to the member
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/5xmUqgfuVeQW145301391980Et7Xuxus
The message body
Greetings,

The event_name at church_name is now full (event_capacity).

The team has been notified.
Manna sendsMap toSample value for Meta
phone→phone27821234567the member. This decides who receives it.
church_name→church_nameGrace Community
event_name→event_nameMen's Breakfast
event_capacity→event_capacity40 of 40
Capacity milestonetemplate events_Capacity_milestone · goes to the church team
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/6AV9tZW4DMhA104851653240odbNrTm7
The message body
Filling up, church_name

The event_name is event_percent full, event_spots_taken of event_capacity spots taken.

Still time to promote it, or to plan for the space you will need.
Manna sendsMap toSample value for Meta
phone→phone27828565536the recipient. This decides who receives it.
church_name→church_nameGrace Community
event_name→event_nameMen's Breakfast
event_percent→event_percent75%
event_spots_taken→event_spots_taken30
event_capacity→event_capacity40
Teach readyabout the recipienttemplate v3_teach_ready · goes to the member
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/525keJPyt5Y9145555411948fViIuptf
The message body
This week's message at church_name is ready.

a_short_line_about_the_message

Open WhatsApp any time to ask about it.
Manna sendsMap toSample value for Meta
phone→phone27821234567the member. This decides who receives it.
church_name→church_nameGrace Community
a_short_line_about_the_message→a_short_line_about_the_messageLiving Beyond Restraint, by Pastor Keith
Teach nudgeabout the recipienttemplate v3_teach_nudge · goes to the member
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/3VNHTwjifVkx150037505248IcVyERTX
The message body
Greetings from church_name,

A thought from this week: teaching_thought

Reply any time if you would like to talk it through.
Manna sendsMap toSample value for Meta
phone→phone27821234567the member. This decides who receives it.
church_name→church_nameGrace CommunityFIXED. The wording now uses it, so the mapping has somewhere to land
teaching_thought→teaching_thoughtgrace is not a reward for the strong, it is a gift for the willingCHANGED. Was theme_line and reflection_or_heart_line side by side, which Meta rejects. Now one field.
Manna alerttemplate ops_alert · goes to Ransley and Josh, never a church
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/5Ak7dhiRMYaZ1059283788962IftXghu
The message body
Manna alert

Something has gone wrong and needs a look.

Church: church_name

What failed: what_failed

Error: error_detail

When: happened_at

This may be ongoing, so check before assuming it was a one off.
Manna sendsMap toSample value for Meta
phone→phone27828565536whoever on the Manna team receives it. One send per person.
church_name→church_nameGrace Communitywhich church it happened at
what_failed→what_failedroute_need endpointwhich part broke
error_detail→error_detailMonday API returned 500enough to act on without opening Cloudflare
happened_at→happened_at3 September, 12:45when
Crisis message, to the memberabout the recipienttemplate crisis_coldmsg · goes to the member, sent by Manna itself when it notices a crisis
Its URLhttps://outbound.m-chat.ai/api/v1/outbound/7hW7HieBSSjU134516910537gCIvAIbn/campaign/7op2KXKLDjkh115716818957psv7zNDM
The message body
I noticed what you said, and I want to make sure you have this.

If you are in immediate danger, please call the SADAG helpline on 0800 567 567. They are there day and night, and it is free.

You matter, and church_name is here for you.

You are not alone.
Manna sendsMap toSample value for Meta
phone→phone27821234567the member. This decides who receives it.
church_name→church_nameGrace Community

3Delete these

Nothing uses them. The three welcome report bots, Bot 4, Bot 5 and Bot 6, can go with them.

VariableWhy it can go
period_labelRetired welcome report
count_phaseRetired welcome report
names_joinedRetired welcome report
support_breakdownRetired welcome report
top_requestRetired welcome report
math_answerA test from May

4Check these, then delete

These look finished with, but search each name in the bot builder and in every function's code box before removing it. A variable can be used inside a function and show nowhere on the canvas.

VariableWhere it came from
prayer_forEarly needs design, replaced by need_alert
requestEarly needs design
shared_forEarly needs design
occasionEarly needs design
namesEarly needs design, generic name so check carefully
dateEarly needs design, generic name so check carefully
fast_typeEarly needs design
durationEarly needs design
prayer_focusEarly needs design
message_summaryEarly needs design
request_summaryEarly needs design
cv_lib_doneFrom the library work, check nothing reads it
cv_lib_replyFrom the library work, check nothing reads it

5Never delete these

Some look unused because they only appear inside function code. Removing one breaks something quietly, with no error.

VariableWhy it stays
welcome_doneDecides new versus returning. Deleting it breaks every conversation.
first_name, last_name, visitor_birthday, visitor_supportWritten by the registration flow onto the member
cv_event_id, cv_event_name, cv_intent, cv_partyBound in the events flow mapping
replyHolds the worker's answer for both HTTP blocks
tempeventname, tempintent, temppartysizeRead inside the booking function. Invisible on the canvas.
tn_details, tn_hint, tn_urgentRead inside the needs function. Invisible on the canvas.
visitor_first_name, visitor_last_name, visitor_whatsapp, visitor_help_nowVisitor alert
bday_first_name, bday_last_nameBirthday alert, new
visitor_support_textThe member's support choices joined into one comma-separated line so the HTTP block can send them. Written by the JavaScript block after the Welcome Flow. Never set this by hand.
church_name, member_phone, member_name, heading, what_they_shared, closing_lineLive templates
event_name, capacity_phrase, events_phrase, signups_phrase, event_capacity, event_percent, event_spots_takenEvent templates
period, number_of_people, most_common_themesCare report
a_short_line_about_the_message, theme_line, reflection_or_heart_lineTeach templates, planned not dead
lead_stage, church_size, plan_interest, source, referred_by, first_contact_date, outbound_d2_sent, outbound_d5_sent, outbound_d10_sent, onboarding_submitted, registration_status_check, church_keyword, rollout, confirmed_status, listchoice, lookup_found, lookup_resultsThe sales and onboarding side, a different product
flow_church_name, flow_church_contact, flow_plan, flow_sponsor_name, flow_sponsor_waThe onboarding flow
what_failed, error_detail, happened_atManna alert, our own monitoring
phone, name, and anything MChat createdSystem fields, not yours to delete

6Testing

Pick a moment, work down the list on WhatsApp, and type what actually happened in the last column. Write what you saw rather than only pass or fail, since the wording is usually where the problem is. When you are done, press Download and send Ransley the file.

Your typing lives in this page only, so download before closing the tab.
#Send thisWhat should happenWhat actually happened
READ THIS FIRST. Short page, about 40 minutes, all on THE SON CENTRE, 031 023 2317. It checks what changed yesterday: sermon questions, bookings, and a few fixes. Start every tab in a BRAND NEW chat, since a new chat is where one of yesterday's bugs showed up.
Note the TIME of each question you ask. If anything is wrong, Ransley needs the time to find it in the logs.
#Send thisWhat should happenWhat actually happened
WHY THIS MATTERS: members can now ask about Pastor Keith's sermons by date, topic or series. Only a few of his sermons have dates so far: 16 May 2023, 23 May 2026 and 24 June 2026. Keith's first new sermon goes in this Sunday.
1what was preached on 24 JuneRestraint to Responsibility, by Pastor Keith Padayachee, with a short summary. It must NOT start with "I could not find"
2what was last Sunday's messageIt should say plainly it does not have last Sunday's sermon yet, and name Restraint to Responsibility as the most recent. It must not pretend June was last Sunday
3what did Pastor Keith preach on 23 MayRestraint in Development
4has the pastor preached about restraintIt should find the restraint sermons and name them with their dates
5what does the church teach about SonshipA teaching answer from his Sonship series. Note whether it says where the answer came from
6what was preached on 16 May16 May 2026 has no sermon. It may offer 23 May as the closest. It must NOT jump back to 2023 as if that were close
#Send thisWhat should happenWhat actually happened
WHY THIS MATTERS: yesterday Manna told you that you were not booked when you were. We found and fixed it. Use your usual number, the one with bookings on it.
1New chat: what am I booked forIt must list your actual bookings. Check them against the events screen
2book me for ASOMASOM costs money and is registered on the organiser's website. It must give the date, the R2000 fee, Sandton and the registration link, and must NOT say you are booked
3Then: what am I booked forASOM must NOT appear in your bookings
4please cancel all my bookingsIf this has been fixed, it should list your bookings and ask which one, or all. If it still says "I could not find that event", write that down, it may not be done yet
5what is ASOMIf fixed, it should give ASOM's dates, fee and link first, not only background about ApostolicGate. Write down exactly what it says
#Send thisWhat should happenWhat actually happened
WHY THIS MATTERS: Manna kept saying it was holding people before the Lord. We rewrote the rule a different way. Also Manna should no longer use dashes.
1Please pray for my mother, she is in hospitalIt must NOT say holding, lifting, praying, carrying her, or before the Lord. It should name your mother and then the fixed prayer sentence. An alert must arrive
2Fresh chat: things are hard at homeSympathy is fine, "that sounds heavy". It must not claim to be holding or carrying what you shared
3Look back over all today's repliesAny dashes in Manna's replies? Write down any you see
#Send thisWhat should happenWhat actually happened
DO THESE ON MONDAY 28 SEPTEMBER, after you have entered Pastor Keith's Sunday sermon on your sermon page. This is the test that decides whether Keith's leaders can start using it.
1what was last Sunday's messageIt must now answer with Sunday 27 September's actual sermon, title and summary
2what did the pastor say about [a theme from Sunday's notes]It should answer from that sermon
3Is it now ready for Keith's leaders to use for a week?Your honest yes or no, and why
#Send thisWhat should happenWhat actually happened
1Anything that felt worse than yesterday?Even if it technically passed

Before deleting anything

A variable can only go when it appears in no template, no bot block, and no function code box. All three, not just the canvas.

This list covers what we could see. If you find something not mentioned here, leave it and ask.