Comments are saved in this browser only. Use the Comments button in the top bar to copy them all and send them on.
Systems today on the top row, the CRM in the middle, the Zoho apps it feeds below. Flip any card for its before-and-after table. What still needs a call or an answer is on the To-confirm slide.
Front: the system as it is and the recommendation. Back: one table per system. For every piece of data it says what exists today (Before), exactly what happens to it (After) and why.
Mailchimp is the newsletter tool. It holds 49 separate mailing lists (Mailchimp calls them audiences), and the same person is often in several of them. Sending moves to Zoho Campaigns; the CRM holds the single record of each person and Campaigns reads from it.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Mailing lists | 49 lists. Seven carry the sending: Community Updates, the newsletter (21,599 subscribed); Stakeholders (152); Donor/Prospect List (1,673); TGGSP Updates (668); Sidak Alumni (424); Media & Press (306); Academics & Institutions (996). Six regional lists (BC, GTA, NJ/NY, AB, IL, DMV) are used for fundraiser invitations. 35 have had no send since 2024 or earlier, or never. Most lists are subsets of the newsletter, so one person receives the same email twice. | Keep every person and their subscription status from all 49 lists, loaded once into the CRM: about 37,000 people, 24,886 with a live subscription. Keep as Campaigns segments, each a filter on CRM fields so a person appears once, set up before the first send: Community (everyone except Stakeholders and Staff; every email sent by topic goes here: the weekly email, invitations, launches, TGGSP, K-12 / Sojhi, press releases), Stakeholders, Staff, Sidak Alumni, Donors & Prospects, Major Donors, 1K+ Donors, Institutions (Audience includes Institutions, in place of Academics & Institutions), Learners (Thinkific ID) and Store Customers (Shopify customer ID). The six regional lists become segments on State / Province together with donors, Sidak alumni and the Board, AC and Board Emeritus values. Retire the 29 one-off lists (exported to an archive file), the four copies of Thinkific and Shopify (their people are the Learners and Store Customers segments), and Donors from Funraise, whose people the donor segment already holds; the Test Audience is deleted. | One record per person ends the double sends, and "who is on which list" becomes something the CRM knows rather than a manual import. |
| Interest groups | Six topics a subscriber can tick on a preference page: Talks & Learning Events 9,635 · Publications 4,989 · TGGSP 3,778 · K-12 / Sojhi 488 · Articles 429 · Sidak 386. The page exists and has never been sent to anyone. | Become nine Campaigns Topics: General Announcements (new, held by everyone subscribed) · Weekly Newsletter (new) · Talks & Learning Events · Publications · The Guru Granth Sahib Project · Sidak · K-12 / Sojhi · Fundraising & Impact (new) · Press Releases (new). Articles is not carried; the people who ticked it keep the Weekly Newsletter. Everyone starts with the topics that match what they receive today; Stakeholders and Staff start with General Announcements only. Each email goes under one topic. A person can leave one topic and keep the others; the preference page goes in the footer of every Zoho email. | Today an unsubscribe removes a person from a whole list. Topics let a board member stop the newsletter and still receive board mail. |
| Tags | 706 labels attached to people, doing four different jobs: statuses (Charter Member, Board, Donor, Sidak Alumni); which system the person came from (Thinkific 3,862, BigMarker 1,665); about 150 per-event labels (Eventbrite auto-tags, "Registrant" and "Attendee" per webinar); and send tracking ("Invite Sent" 14,714, "Already Sent"). | Keep the statuses, but as CRM fields: roles as Affiliation values and prospects as the Prospect checkbox, set by staff; donor category and giving level calculated from gifts; Major Donor, 1K+ Donor and Sidak alumni as saved filters. Keep the per-event labels as Event Registration records on the contact. Keep the origin markers as the contact's source IDs. Drop send tracking: Campaigns records who received what on its own. | Zoho allows 10 tags per record, and a tag is only a word: it has no date, no owner and no rule behind it, so it cannot say when or why a status applies. Fields and records can. |
| Merge fields | Merge fields are the data columns Mailchimp stores per person (first name, postcode and so on). The newsletter list has 51 of them. 24 were copied in from Funraise (Total Donated, Donor Type, Gift Capacity, Net Worth, Income, wealth score) and 14 from BigMarker; fewer than 2% of records hold a value. Other feeds reuse them for unrelated data: Facebook zip codes land in the Funraise postcode column. | Keep first name, last name, email, address and organisation. Drop the rest. Giving figures live on the CRM contact, where Campaigns can read them to build segments; wealth-screening data does not go into an email tool at all. | Two copies of donor data drift apart, and personal financial data in a marketing tool is a privacy exposure. |
| Saved segments | Saved segments are stored filters. There are 15. Geography is done three different ways: by the IP address at sign-up (USA List 6,720, Canada 3,201), by a Funraise country column (UK 109), and by hand-made regional tags. One filter points at deleted tags and matches nobody. | Rebuild as rules on CRM fields. Geography comes from the contact's address (state or province, with city or postcode for the Toronto and New York areas), so an invitation to a BC fundraiser is "everyone with a BC address". The event reminder is a template only: Zoho One's Campaigns edition has no filter on who did not open. Nothing else is carried. | A filter on a real address field stays correct; IP location and hand-made tags go stale. |
| Opt-outs and bounces | 9,612 unsubscribed and 6,471 bounced addresses across all lists. 2,150 people unsubscribed from the newsletter but are still subscribed on another list, so they still receive email. | Keep every unsubscribed and bounced address. They are loaded into Campaigns first, before any contact is imported, and the count is checked. A bounce on any list counts as a bounce everywhere. The 2,150 who left the newsletter keep only the topics of the lists they stayed on, never the Weekly Newsletter. | The first Zoho send must not reach anyone who opted out. |
| Campaign history and engagement | 1,227 sent campaigns with opens and clicks. The warehouse already stores campaign totals for the dashboard's Email tab. Per-person activity exists only in Mailchimp and is deleted when a member is deleted. | Keep campaign totals (already in the warehouse; the 1,227 campaigns stay on the dashboard's Email tab). Keep each person's full Mailchimp history in an export, and a summary on the contact: first subscribed, last open, last click, and campaigns opened and clicked in the 12 months before the move. As much of the history as Zoho can load also comes onto the contact, for the Mailchimp years and for Zoho's own campaigns from the first send; Raah checks how much Zoho accepts. No Mailchimp member is deleted before the migration is signed off. | Engagement feeds the engagement score and the lapsed-donor logic. |
| Feeds that write into Mailchimp | Thinkific (an app plus a Zapier zap), Shopify (ShopSync), Eventbrite (three integrations, no longer running), Facebook lead ads (Zapier), the website sign-up form (7,489 records), and two zaps copying one list into another. Also a webhook to campaignsync.ca, a retired NationBuilder bridge that wrote 31.7% of the newsletter's records. | Re-point each one at the CRM: Thinkific, Shopify and BigMarker, each connected in the way agreed with Raah, Facebook lead ads through LeadChain, the website sign-up forms through Zoho Flow once their destination in Webflow changes. Switch off the three Eventbrite connections, the two list-copy zaps and the dead webhook. | The CRM becomes the one place a person enters the system. |
| Templates | 19 templates. The 200 campaigns sent since June 2025 were built from four of them in all but 6 cases: SikhRI - Simple Message, 1:2 columns:3 columns, Weekly - 13 August 2024 and SOTP-Report-template. | Rebuild these four in Campaigns to look the same. The rest are saved as files, not rebuilt. | These cover the current sending. |
| Data that exists only here | Sidak attendance by year (tags "Attended Sidak 2003" to "2022" on 424 people); stakeholder roles (Charter Member, Board, BE, AC, CM Family); media classifications (International, Panjabi); TGGSP India event attendance. | Keep, as CRM fields and records: Sidak years attended on the contact, with Year unknown where no year is known; roles as Affiliation values; media classification as Media type; India events as Event records. | Nowhere else holds them. Losing them loses the alumni and press databases. |
Fix regardless: the 2,150 people who left the newsletter and still receive other mail. Topics in Campaigns resolve it: leaving the newsletter leaves that topic, and a bounce anywhere suppresses everywhere.
Funraise is the donor database and the online giving tool. Shevya keys every gift into it, including cheques and wires. The decision is made: the CRM becomes the donor database, the new Stripe donation pages take online giving, and Funraise is switched off last, after everything else has moved. Values marked "proposed" are in the Funraise Migration Plan v1, for Shevya to confirm. The first table says what happens to each piece of data; the second is the work plan.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Supporters | 2,774 records: 2,581 people and 193 organisations (109 corporations, 62 foundations, 8 places of worship, 8 donor-advised-fund sponsors, 3 schools, 3 other). 389 households hold 692 people. 1,130 supporters have no donation recorded. | Keep all but the 6 test records. People become CRM Contacts, matched by email to the same person from Mailchimp, the courses and the store, never by name; organisations become CRM Organizations with their type kept; the 241 households with two or more members become Household records. The Funraise supporter ID is stored on every record so gifts match back (proposed). | One person, one record. Organisations and households become their own objects instead of a flag on a person. |
| Supporter tags | 43 different tags on 2,765 supporters, doing five jobs. Donor category: NCM 1,843 · CM_Life 67 · CM_Active 62 · CM_Inactive 7 · Prospect 89. Charter-member start year: a bare year tag on 49 people. Ex-charter-member year: 2021_Ex_CM to 2026_Ex_CM, 24 people. Giving tier: 1K_Donor 157 · Major_Donor 75. Governance: Board 10 · AC 10 · BE 12 plus family variants. Fundraiser attendance: BC_Fundraiser_2024 129 · NJ_Fundraiser 79 · Calgary 2023 and 2024 · DMV · SA · NY. Programme: Sidaker 603 · Volunteer 7. Noise: Test, Facebook, Paypal. | Keep the meaning, not the tags (proposed). Charter status becomes a charter commitment with its start year, set from the tags and then by the fundraising role. Donor category, giving level and retention are calculated from gifts and commitments; Major Donor and 1K+ Donor become saved filters. Board, AC, BE, the family tags and Volunteer become Affiliation values; Prospect becomes the Prospect checkbox; CM_Submission becomes the lead source Charter Members Network. Each fundraiser attendance becomes an Event Registration record. Sidaker becomes Sidak years attended. Test, Facebook and Paypal are dropped. | A tag is a plain label with no date, no rule and no owner, so it cannot say when someone became a Major Donor or why. Today Shevya updates these by hand; calculated fields update themselves and are always current. |
| Gifts | 7,788 completed gifts dated 2004 to 2026: 4,832 online and 2,956 entered by staff. Online gifts keep the amount and currency given; gifts entered by staff are recorded in USD only, including 628 on the Canada and UK forms. 2,215 failed attempts, 1,568 of them in 2022; 53 Pending entries, USD 996,500; 6 refunds. | Keep every completed gift as a Donation record with the amount and currency given and its USD value, plus four fields Funraise does not separate out: Channel, Fund, Entity and Entry mode. CAD and GBP amounts entered by staff are recovered from the notes, or worked back at the rate of the donation date. The Funraise donation ID is kept as a hidden reference field for the import. The dedication, anonymous flag and donor comment are not carried as fields; where a past gift has one, it goes into that gift's notes, so an anonymous donor is never named. Refunds come over as refunded; failed attempts are counted on the recurring plan; Pending entries become pledges for the year (proposed). | Every board indicator (totals, tiers, retention) is a sum over these records, and every donation keeps the currency it was given in. |
| Allocation | 23 fund names and 32 donations with none, including legacy codes prefixed with "#" and staff role names typed in as allocations. | Keep as Fund with exactly four values: Unrestricted, TGGSP, Sidak, SHP. Older spellings map to the four; the 13 other names count as Unrestricted unless Shevya says otherwise, and each donation keeps its original name (proposed). | Reports need a clean split by fund. TGGSP and Sidak are sub-brands that must never be collapsed into the organisation total. |
| Payment method | Ten values, with checks under two spellings; "other" on 1,073 gifts, mostly third-party platform receipts such as DVN and CanadaHelps. | Keep as one picklist: Card, ACH, Wire, Check, PayPal, Cash, Stock, Other. Checks paid online through Stripe, iATS or a removed gateway become ACH, and "other" takes the method a payment tag names (proposed). The channel information moves out of this field into the new Channel picklist (see the Offline card). | Method (how the money moved) and channel (where the gift came from) are two questions; today one field answers both badly. |
| Giving forms and payment accounts | 31 forms: 4 active (US main, US Foundation, Canada, UK) and 27 closed, on three Stripe accounts, PayPal and iATS. Country totals are reported by the form a gift came through. | Keep the form as the Entity on every historical gift (US, Canada, UK; the US Foundation form reports as US). The form name is not carried: entity and channel replace it. New online gifts come through the Stripe donation pages Raah is building on the same Stripe accounts. | Country indicators depend on this field. The Stripe accounts stay, so no new payment underwriting. |
| Recurring plans | 30 active (28 monthly, 2 quarterly; 20 in USD, 9 in CAD, 1 in GBP), all last charged through Stripe; 48 failed, 12 cancelled, 58 historical, 18 redacted. Donors cancel by emailing Shevya. | Keep each plan as a Recurring plan record with status, next payment date, card type and expiry, never the card number. The requirement is that each plan carries on from the new Stripe setup with the card already on file, without the donor entering it again; a plan is cancelled in Funraise the day it starts on the new setup, so nobody is charged twice. | The failure alert and the card-expiry reminder in the requirements need the plan as a record. |
| Receipts | Templates per entity; CAD and GBP receipts prepared by hand; donor-advised-fund gifts get an acknowledgement, not a receipt. | Keep the rules, rebuilt as CRM templates that read the gift's original currency. Receipt type (receipt, Foundation / DAF letter, or none for platform donations and Gift Aid) is set automatically from the organisation and the channel, with a manual override (proposed). | Requirement, and it removes the manual CAD and GBP step. |
| Consent flag | Every giving form opts donors in automatically. | Do not copy the flag. Every donor starts with General Announcements and the Fundraising & Impact topic (Mailchimp Migration Plan v7), and the donation pages say so in one line near the donate button. Mailchimp unsubscribes and bounces always win. The postal opt-out (1,100) is kept as Do not mail. | One consent rule for every donor, set in the Mailchimp plan. |
| Reports and dashboards | Shevya's board dashboard and reconciliation dashboards. The donor-tier table cannot be built in Funraise, which is why the planner spreadsheet exists. Marketing has no Funraise access and asks Shevya for numbers. | Rebuild as one fundraising dashboard in Zoho Analytics, opened from a tab in the CRM, with the Monthly PI report and the tier table; saved filters of donors live in the CRM. Marketing opens the same dashboard. The Performance Dashboard reads donations from the CRM after the switch-over. | One place for the numbers. |
| Integrations | Mailchimp (writes 24 donor columns into two lists), Streamlabs and Twitch (legacy), Shopify pending; QuickBooks, Salesforce and Raiser's Edge deactivated. The single webhook slot is disabled and free. | Switch off all of them at cut-over. The free webhook slot can feed Zoho Flow or our own receiver during the transition. | Nothing downstream depends on them once the CRM is the source. |
The work that makes it happen
| Workstream | What it involves | Owner | Where it stands |
|---|---|---|---|
| 1 · CRM data model | Contact, Organization, Household, Donation, Pledge and Recurring plan modules with the agreed field set, so every Funraise field has a home before anything is moved. | Skyrocket, with Raah building | Target model v3; Funraise fields and API names proposed in the Funraise Migration Plan v1, for Shevya to confirm |
| 2 · Mapping tables | 43 supporter tags to fields and records; 23 fund names to 4 funds; payment method and channel picklists; receipt type rule. | Skyrocket; Shevya signs off | In the Funraise Migration Plan v1; Shevya's review pending |
| 3 · Online giving | Stripe donation pages on the three Stripe accounts, each donation written to the CRM with entity, fund, channel and UTM, then to Books (Donation Flow Data Requirements v4). | Raah | In progress |
| 4 · Receipts | Templates per entity in USD, CAD and GBP reading the gift's original currency; automatic receipt type; Gift Aid declaration on the record. | Raah, rules from Shevya | Receipt formats handed to Raah; rules still to write |
| 5 · Recurring plans | The 30 active plans carried onto the new Stripe setup with the card on file; failure notice and card-expiry reminder set up (method in Donation Flow Data Requirements v4). | Shevya, with a message drafted by Skyrocket | Not started |
| 6 · Third-party imports | A monthly import template for the DVN and CanadaHelps reports: channel preset, entry mode Platform report, no SikhRI receipt, donors matched on email or created. | Raah, to the Funraise Migration Plan v1 | Waiting on the report formats from Gurjot |
| 7 · Migration | Load supporters, gifts, plans and pledges from Funraise as repeatable updates, keep Funraise IDs on every record, and check counts and totals by year, fund and entity against Funraise. | Raah, to the Funraise Migration Plan v1; Skyrocket supplies the file of CAD and GBP amounts recovered from the notes | After Mailchimp and the feeds are live |
| 8 · Reports | One fundraising dashboard in Zoho Analytics, opened from a tab in the CRM: the board dashboard, the Monthly PI report and the tier table; marketing opens the same dashboard. Saved filters of donors in the CRM. | Raah, to the Funraise Migration Plan v1; Skyrocket moves the Performance Dashboard to read donations from the CRM | Set out in the Funraise Migration Plan v1; Shevya's review pending |
| 9 · Cut-over | Funraise set read-only, integrations off, webhook slot released, subscription cancelled after one full reconciled month on Zoho. | Jaspreet | Last step |
To confirm with Shevya, as comments in the Funraise Migration Plan v1: the Pending entries as pledges for the year · the 13 other fund names as Unrestricted · no receipt for platform donations · the charter tier from the yearly commitment · one commitment per couple · CM_Family donations as non-charter · the last 36 months for giving levels · the exchange rate from Zoho Books · donors to date counted once · the non-charter tier from this year's total · the retention definitions · grants, employer matching and Gift Aid · the Australian charter members in the projections. Where Gift Aid declarations are read today is open with Shevya (Funraise Migration Plan v1, FR-25); the donation forms are covered in a separate call with her. With Jaspreet: which Stripe account belongs to which entity, and whether the 30 active plans were charged through the accounts Raah has connected.
Eventbrite handles registration for in-person events. It stays. The change is that registrations and attendance flow into the CRM automatically through Zoho Flow instead of being exported and tagged by hand.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Events | 71 events since 2016: 16 in 2025 and 16 in 2026, up from 7 in 2024. 58 in person, 13 online, 64 free, 3 multi-day, 60 publicly listed. | Keep all 71 as Event records in the CRM (name, date, venue, online or in person, capacity, listed or not), imported once. New events arrive through Flow. | Attendance has to attach to an event record. |
| Registrations | 3,906 registrations from 2,493 people. The form asks only for first name, last name, email, an optional phone number, and one access or dietary question. | Keep all 3,906 as Registration records on the contact: event, date registered, source, ticket type, status. New registrations arrive through Flow ("Attendee added") within minutes. | "Event Registrant" with the detail of each event is the Community team's biggest ask. Today it is a Mailchimp tag applied by hand from an export. |
| Registration source | Recorded on every registration: organiser-shared links 568 · Eventbrite-distributed 496 · WhatsApp 482 · website 394 · direct 276 · email 177 · Mailchimp 96 · Eventbrite search and browse about 400 (10%) · Facebook 71 · ads 78. | Keep as the Registration source field on every record. | It is the event equivalent of a UTM code: it says which channel filled the room. WhatsApp is a top-three channel nobody was measuring. |
| Check-in | 429 check-ins ever recorded, zero on any 2026 event. Volunteers check people in on a Google Sheet because the single Eventbrite login cannot be shared. | Capture attendance two ways. Going forward, volunteers check in on the Eventbrite organizer app with per-event access (no shared login) and Flow writes "Attendee checked in" to the Registration record. For 2025 and 2026, the check-in sheets are imported once and matched to registrations by email. | Without this, "Event Attendee" is empty for every 2026 event, and the registrant-versus-attendee question cannot be answered. |
| Custom answers | Access and dietary needs; a photo release on some events. | Not migrated. They stay in Eventbrite, per event. | Sensitive and only relevant to one event. |
| Platform and cost | Free plan, no link to any CRM. Three old Mailchimp integrations no longer run. | Keep Eventbrite on the free plan. Zoho Flow is the link. Zoho Backstage was evaluated: its free tier has no CRM sync and caps at 100 attendees; the paid tier, its cost and Luma as an alternative are on the To-confirm slide. | Free, keeps the roughly 10% of registrations that come from Eventbrite search, and no migration of 71 events. |
To confirm with Simran: whether per-event organizer access for volunteers is acceptable · whether the check-in backfill happened, and where · the list of events not on Eventbrite.
Shopify runs the book store. It stays for now. Orders and customers reach Zoho through the connection Raah chooses, and two operational problems are fixed regardless of platform.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Customers | 2,450 records, 2,443 with an email. Marketing consent given at checkout: 1,354 subscribed (55%), 931 not asked or declined, 158 unsubscribed. 265 records never bought anything (they downloaded a free item). Only 13 buyers exist in no other system. | Keep every buyer as a CRM Contact with the Shopify customer ID, a "Website purchase" relationship, and the consent they gave at checkout, which no other system may overwrite. New customers arrive through the same connection. | The CRM gains the purchase relationship and a real consent signal, not new people. |
| Orders | 3,106 orders since 2016. 2026 to date is the best year: $13,791 on 169 orders. Since 2025, 90% of revenue is one title, Guru Gobind Singh Sahib: Life, Vision & Wisdom. | Keep the full ten-year order history. It is extracted to the warehouse first (no Shopify source exists there today). Past orders are loaded into the CRM once from a Shopify export. New orders are written to Zoho Books and linked to the contact. | Zoho Commerce cannot import order history, so it must be captured before any platform change. |
| Products | 37 products, 35 active: print books, Sojhi curricula, posters, and free e-books and reports sold at $0. | Keep the 37 as Books items. Move the free downloads out of the store, if Gurjot agrees. Report downloads on sikhri.org already link straight to the file and ask for no email (Form Migration Plan v5). | Free items make people "customers" with no order. |
| Fulfilment | Never recorded. 457 paid orders are marked unfulfilled (171 in 2026). Books are shipped by hand from India and the USA, and orders are noticed in the support@ mailbox. Tracking numbers are emailed to buyers by hand. | Fix regardless of platform: whoever ships marks the order fulfilled in Shopify (or in Zoho Inventory if the team later moves to Commerce). The connection then records the status on the order. | A customer-service exposure. The undelivered B.C. book orders had no system trail. |
| Payments and payouts | Shopify Payments pays out to a Chase account. The admin shows "Payouts paused because your bank account isn't set up for withdrawals", a failed $96.48 reverse payout, and a $528.08 balance. Chargeback rate 5.26% against Shopify's 1% threshold. | Fix regardless: enable withdrawals on the bank account or replace it, and review the two high-risk orders. | Shopify can hold payouts if the negative balance grows. |
| Integrations | A Zapier zap logs each order to a Google Sheet. A Mailchimp feed (ShopSync) no longer runs. A Xero invoice zap died with Xero. The Mailchimp app is installed. | Replace with one connection: order to Books, customer to CRM. Retire the sheet log and the Mailchimp app. | One path instead of three half-working ones. |
| Store platform | Shopify Basic, $413 a year. | Keep. Gurjot confirmed the store is used only to take orders and payments. Zoho Commerce and Mo's Checkout plus Inventory option were weighed and set aside; the gaps are process, not platform. | A migration would not fix fulfilment or payouts by itself. |
To confirm with Gurjot: how pending shipments are tracked · the payout bank account · whether free downloads should stay in the store. With Parwinder: how payouts and refunds are booked in Books.
Zapier is the plumbing: 44 automations (zaps), 13 switched on. Each active zap is listed with what it does today and what replaces it. Where it stands: Zapier Migration Plan v3 is the published version; it is being aligned to Form Migration Plan v5 and Mailchimp Migration Plan v7 before the next version goes out.
| Zap | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Thinkific to Mailchimp | Each new Thinkific user is added to the Online Courses list with email, name and Thinkific ID. Running since 2021. | Replace: Thinkific's webhooks (sign-up, enrollment, completion) create the Contact if new and add a Course enrollment record. We recommend they go straight to a CRM function, as Raah does for Stripe, rather than through Zoho Flow; Raah decides. | No Flow connector exists for Thinkific; a sign-up reached Flow by webhook in a test on 2026-09-17, so Flow stays the fallback. |
| Two list-to-list copies | Every Online Courses member and every TGGSP subscriber is also added to the newsletter list. | Retire. With one contact base there is nothing to copy; TGGSP interest becomes a Topic. New learners still start with the Weekly Newsletter, with a notice on the sign-up form (Mailchimp Migration Plan v7); Thinkific's own Mailchimp connection is switched off with the zap. | One contact base. |
| Facebook lead ad to Mailchimp | One copy per event, one currently live: email, name, phone, zip code, form name and an "Interested" tag go to the newsletter list. | Replace with LeadChain, a free Zoho extension that writes Facebook leads straight into CRM contacts in real time. Switch it on before the zap goes off; Facebook keeps leads for 90 days. | No copy per event, and the person lands on their contact record. |
| BigMarker to Mailchimp and a Sheet | Each webinar registrant is added to the newsletter with a per-webinar tag, and city and country are written into a Funraise column. | Replace: Flow's BigMarker connector ("registered for conference") creates a Webinar registration on the contact. The sheet row continues until the team using it confirms the CRM replaces it. | The connector exists; the sheet duplicates the record. |
| Online Event Request, In-Person Event Request, Media Request | Three Webflow forms write name, email, phone, role, organisation and event details to Google Sheets. The online request also subscribes the requester to the newsletter. | Replace: the Webflow forms stay; Zoho Flow writes the same Google Sheet row and finds or creates the CRM contact with its lead source and topics: General Announcements with Talks & Learning Events for event requests, General Announcements with Press Releases for media requests (Form Migration Plan v5). This replaces the newsletter step on the online request. | Requests become CRM records, and the team keeps its sheet. |
| Ask SikhRI form to a Sheet, and to Facebook Conversions | Question, source page and timestamp go to a sheet, and a Meta conversion event is sent. | Replace: the form stays; Zoho Flow writes the same sheet row. The conversion moves to Google Tag Manager, already on sikhri.org. | Conversion tracking is advertising measurement, not CRM data, and Tag Manager follows the visitor's cookie choice. |
| New Shopify Customer to a Sheet | Fires on every order and writes an order-log row. | Retire once orders reach Books through the new Shopify connection and finance confirms Books replaces the sheet. | Duplicate of the Books record. |
| Spotify to Webflow, YouTube to Webflow | A new podcast episode or video becomes a Webflow CMS draft. | Move to Zoho Flow: its YouTube connector for videos (confirmed available), and a daily check of the Spotify feed for episodes. The daily check needs Flow's custom functions, which the Flow trial asked to upgrade for; whether Zoho One includes them is open. Episodes published only on Podbean are not in the Spotify feed and are added to Webflow by hand. | Content, no people data; Zapier can then close. |
| The 31 switched-off zaps | 11 abandoned tests, 11 legacy Webflow CMS pipelines, Funraise-to-Xero and Shopify-to-Xero (dead with Xero), Gift Aid declaration to a Sheet (off since 2024), Resource Download to Mailchimp, Google Ads customer lists, a Sidak form conversion. | Delete after export. Nothing replaces the Gift Aid and Resource Download zaps: the declaration form no longer exists on SikhRI's sites, and the download form is hidden on every resource. Gift Aid moves to the UK donation page. | Nothing depends on them. |
Fix regardless: a Webflow API key sits in plain text inside eleven zaps and must be rotated. 10 of the 13 active zaps live in one person's private folder; move them to a team workspace before anything else.
To confirm with Manveer: keep or replace, per zap · who reads the four request sheets and the Ask SikhRI queue. With Jaspreet: who owns the Zapier account.
Thinkific hosts the free self-paced courses. It stays. The change is that enrollments become records on the CRM contact instead of members of a Mailchimp list.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Users | 6,188 users with email, names and a Thinkific ID. 99.7% are already Mailchimp records. | Keep all as CRM Contacts, with the Thinkific ID stored as a source ID. | The source ID, not the email, is how records match. |
| Enrollments | 8,842 enrollments across 18 courses, each with course, date enrolled, date completed and percentage progress. | Keep every enrollment as a Course enrollment record on the contact. Past enrollments are loaded once from a Thinkific export; new ones arrive by Thinkific webhook. | Enrolled versus completed is how "attended" is answered for a self-paced course. |
| Sign-up questions | Unknown. The API token refused our local check even though the daily warehouse sync works. | To confirm. If custom sign-up questions exist, each is mapped to a contact field or dropped. | Open item. |
| Mailchimp mirror | The Online Courses list (5,502 members) and the zap that fills it. | Retire once the new feed is live. | The CRM holds the enrollment natively. |
To confirm with Manveer and Simran: what counts as "attended" for a self-paced course: enrolled, started, or completed.
BigMarker runs live webinars and the paid instructor-led courses. It stays. Registrations and attendance flow to the CRM through Flow.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Registrations | 4,107 attendee records across 95 webinars, each with email, names, registration source, tracking code and country. | Keep all as Webinar registration records on the contact, with source and tracking code. | Says which channel brought each registrant. |
| Attendance | Time entered and left, minutes present, chats, questions and polls. On large webinars 30 to 45% of registrants attend. | Keep an attended flag and minutes present on each registration. | Feeds the engagement score, and separates registrant from attendee. |
| Extra registration questions | City, phone and WhatsApp opt-in, asked on 18 of 95 webinars. | Optional: mapped to contact fields only where a value exists. | Inconsistent across webinars, so not a reliable source. |
| Feed | A Zapier zap adds registrants to the Mailchimp newsletter and a Google Sheet. | Replace with Flow's BigMarker connector writing to the CRM. The Google Sheet row continues until the team using it confirms the CRM replaces it. | The connector exists. |
Website forms today write to Google Sheets or Mailchimp through Zapier, or only send a notification email, and nobody owns the follow-up. Form Migration Plan v5 (2026-10-07) gives each form a route: Webflow page forms stay and Zoho Flow carries them to the CRM and the team's Google Sheet; Google Forms and Typeform member forms move to Zoho Forms, which writes to the CRM itself; Typeform surveys move to Zoho Survey and are not connected. Every route that creates a person searches by email first. Where it stands: v5 is under review with SikhRI and Raah.
| Form | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Event and media requests | Three Webflow forms (online event, in-person event, media) write to Google Sheets through Zapier. | Stay on Webflow; Zoho Flow replaces the Zapier webhooks. Each submission writes the same Google Sheet row and finds or creates the CRM contact with its lead source (In-person event request, Online event request, Media request) and its topics. The Contact Form and the Sojhi / SOTP contact forms, email only today, also reach the CRM as contacts through Flow. | Each request becomes a CRM record, and the team keeps working from its sheet. |
| Ask SikhRI | A Webflow form writes the question and source page to a sheet. | Stays on Webflow. Zoho Flow writes the same sheet row; the Meta lead report moves to Google Tag Manager. No CRM record: the form asks for no name or email. | The team answering works from the sheet. |
| Gift Aid declaration | The UK giving form asks about Gift Aid and links to a separate declaration page. The Webflow declaration form no longer exists on SikhRI's sites; its zap has been off since November 2024. | Gift Aid declared on each new UK donation, from the UK donation page's Gift Aid answer (proposed). Where declarations are recorded today, and whether a standalone form is needed, is open with Shevya. | Required for UK Gift Aid claims. |
| Surveys | Three Typeform surveys: State of the Panth (168 responses, latest 2026-09-29; the site links Typeform's old address, which adds a "this typeform has moved" step), Sikhi & Philanthropy, Donor Satisfaction. Typeform Basic stops collecting at 100 responses a month. | Rebuilt in Zoho Survey, each on its own page; the /sotp and /social links point to the new State of the Panth survey. Not connected to the CRM. Typeform is cancelled once past results are exported (about $327 a year). | Survey branching and reports, no response cap, and the UTM tags on the link kept with each response (tested 2026-10-07). |
| Sidak application, Sidak alumni form, Volunteer Form | Google Forms, responses kept in Google Forms. The alumni form opens only after a Google sign-in, for its headshot upload. The Sidak application is closed until the 2027 intake. | Rebuilt in Zoho Forms, each on its own page at a SikhRI address, linked from the same buttons, and sent straight to the CRM as a contact, with a Google Sheet copy where the team wants one. The 2025 Sidak link and the two Google request forms on /workshops are retired; those buttons point to the Webflow request forms. | Save for later on any device, uploads without a Google sign-in, styling that matches the site (tested on a Zoho Forms trial 2026-10-07), and no Flow step. |
| Member forms | Charter Members Network questionnaire, Board and AC member forms on Typeform, not linked from the sites: contact details, consents, headshot. | Rebuilt in Zoho Forms. Each response updates the member's existing contact and marks their affiliation. | Typeform's own Zoho link can only create a new lead and cannot fill affiliation. |
| Charter Members Network sign-up | A Webflow form on charter.sikhri.org; Webflow emails each sign-up to four inboxes, and a welcome template is sent by hand. | Stays on Webflow; Zoho Flow finds or creates the CRM contact, lead source Charter Members Network, and an automatic reply replaces the hand-sent template. Who follows up the sign-ups in the CRM is open. | Sign-ups land where the fundraising team works. |
| Newsletter sign-up | A Mailchimp embedded form (7,489 records) and a hosted sign-up page. | Stays on Webflow: the Mailchimp code is replaced by a Webflow form in the same spot, looking as it does today, and Zoho Flow finds or creates the Contact with General Announcements and the Weekly Newsletter, plus the topic for each interest ticked (Mailchimp Migration Plan v7). The interests with no topic come off the forms. No sign-up form is built in Campaigns. | The CRM becomes the entry point. |
Still open: who follows up Charter sign-ups; the Sidak application's questions, readable only when the 2027 intake opens; the forms.sikhri.org address, available on a paid plan only and not yet tested; the Google Tag Manager tag that carries a visit's UTM tags into the Zoho form pages, still to be built. The donation forms are covered in a separate call with Shevya.
Most of the money arrives offline: cheques, wires, stock, and third-party platforms such as DVN, CanadaHelps and employer matching. These gifts are typed in by hand today and will still be typed in, but into the CRM, with a required Channel field.
| Data | Before (today) | After (in Zoho) | Why |
|---|---|---|---|
| Cheques, wires, stock | 52.8% of dollars by cheque, 16.2% by wire. Keyed into Funraise by Shevya; finance looks up the USD exchange rate by hand. | Keyed into the CRM Donation form in the currency given. The exchange rate for the donation date is filled automatically from the Zoho Books rates, and finance can correct it (proposed); Books receives the entry through the sync. | One entry point and no manual currency lookup. |
| Channel | A tag on the gift, with six defined values: DVN, CanadaHelps, Employer matching, Grant, Fundraiser, Campaign. A missed tag makes a gift invisible to channel reports. | A required choice with the 11 values listed below (proposed). It cannot be left blank. | Every gift is counted in exactly one channel. |
| DVN and CanadaHelps | Monthly reports keyed in line by line by Gurjot. | A monthly file import into the CRM with the channel preset and no SikhRI receipt; the donor is matched by email or created, and a donation the report names no donor for goes on one anonymous contact per platform (proposed). | Harinder's target is 85% of gift entry automated. |
| Employer matching | The company is recorded as the donor, with a tag and a soft credit to the employee. | Organization as donor, channel set to Employer matching, soft credit to the employee. Soft credits are never counted in totals or tiers. Employer matching counts as non-charter (proposed). | Keeps the employee visible without double counting. |
| Grants and donor-advised funds | Organisation gifts; DAF gifts are acknowledged, not receipted. | The organisation's type (Foundation, DAF sponsor) sets the Foundation / DAF letter in place of a receipt (proposed). | The receipt rule stops depending on memory. |
The 11 channel values (proposed)
From the team's CRM Requirements workbook, the Shevya and Manveer sessions, the Mailchimp Migration Plan v7 and the Funraise Migration Plan v1: 14 entities, 181 fields, 27 rules. Colour is the source system. ƒ marks a field the CRM computes. "Proposed" marks a Funraise plan value Shevya has yet to confirm. Hover a field for its definition or formula.
BeforeThe same person sits in up to six systems with no shared key.AfterOne record with a source ID per system; consent, Affiliation and the giving figures live on it. Every person is a Contact: there is no Leads module, so nothing is converted and no one exists twice.
BeforeFunraise files them as supporters: 193, including 109 corporations, 62 foundations and 8 DAF sponsors; 171 have given.AfterTheir own module. Their donations count for the organisation; the person named on it is a linked contact.
Before389 Funraise households hold 692 people; no other system knows.AfterAn explicit Household record, built only from Funraise's own households.
BeforeCharter membership is hand-set tags (CM_Active 62, CM_Life 67, CM_Inactive 7, Ex_CM by year); no pledge record can be read from Funraise.AfterA charter commitment per member and per removal, and a pledge for the year per Pending entry (53). Charter status follows from it (proposed).
Before7,788 completed donations in Funraise: channel as a tag, 23 fund names, checks under two spellings, and CAD and GBP gifts entered by staff recorded in USD.AfterOne record; channel, fund, entity and payment method required on manual entry. Every indicator is a sum over it.
Before30 active plans, all last charged through Stripe; cancellations arrive by email.AfterA plan record kept up to date from Stripe, with failed charges and a card-expiry reminder (proposed).
BeforeEventbrite exports tagged by hand in Mailchimp; zero check-ins recorded in 2026.AfterEvent and Registration records via Flow, registrant vs attendee.
BeforeThinkific and BigMarker each mirror into Mailchimp through Zapier.AfterEnrollment records on the contact: Thinkific by webhook (straight to the CRM recommended), BigMarker through Flow.
BeforeShopify orders logged to a Google Sheet; buyer consent only in Shopify.AfterOrder in Books; purchase relationship and consent on the contact.
BeforeOpens and clicks live only in Mailchimp and vanish with the member.AfterThe full Mailchimp history is exported and kept; as much of it as Zoho can load comes onto the contact, at a minimum a summary, and Zoho's own campaigns from the first send.
BeforeNotes in Funraise; Sidak years as Mailchimp tags on 424 people.AfterNotes and the assigned board member on the donor; Sidak years as a field, with Year unknown; Volunteer as an Affiliation value. Volunteers in Zoho's volunteer module, owned by SikhRI staff (Harinder, 20 Aug).
Before43 Funraise tags and 706 Mailchimp tags carry status by hand.AfterAffiliation and Prospect set by staff; charter status set on the commitment; the rest computed or saved filters.
Each card: what happens today, what happens once Zoho is in place, and why. Checked against Zoho's documentation: 93 claims confirmed, 26 undocumented.
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Contacts | 49 Mailchimp audiences, the same person in several | CRM Contacts sync to Campaigns within minutes; lists are segments over synced fields | One contact base |
| Interests | 6 groups on the newsletter, never used to send | Nine topics: General Announcements, Weekly Newsletter, Talks & Learning Events, Publications, TGGSP, Sidak, K-12 / Sojhi, Fundraising & Impact, Press Releases | Leave one topic, keep the rest |
| Engagement | Opens and clicks only in Mailchimp, deleted with the member | Mailchimp history exported; as much as Zoho can load on the contact, at a minimum a summary, and Zoho's own campaigns from the first send (Raah to check) | Engagement score, retention |
| Unsubscribes | Per audience; three systems disagree | Campaigns writes Email Opt Out back to the CRM | One consent record |
| Field mapping | 51 merge fields, 38 barely filled | Manual mapping: name, email, address, organisation, and the fields segments filter on (Affiliation, Prospect, State / Province, Sidak years, Audience, Media type, Donor category, Giving level, Lifetime giving, Giving this year, Giving last year, Active recurring plans, Thinkific ID, Shopify customer ID, Last course enrolled, Courses completed, Last purchase date, Purchases) | Nothing else belongs in an email tool |
| Capacity | 36,964 people, 1.74M emails a year | 5,000 contacts per employee licence, unlimited emails | Not a concern at this size |
Order: Campaigns extractor into the warehouse first, so the Email tab survives; then suppression, contacts, Topics, feeds, templates; then Mailchimp goes read-only. Rabia (Raah): field labels and API names must be identical across CRM, Campaigns and Backstage or "the data will not sync".
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Eventbrite | No link; registrant tag applied by hand from an export | Attendee added, order placed, checked in, each a Registration record | Connector exists |
| BigMarker | Zap to Mailchimp and a Sheet | Registered for conference, a Webinar enrollment | Connector exists |
| Thinkific | Zap to Mailchimp, then a list sync | Recommended: webhooks straight to a CRM function, not Flow (Raah decides); a Course enrollment | No Flow connector; Raah uses the same pattern for Stripe |
| Shopify | Zap to a Sheet; dead Mailchimp feed | Order to Books; customer with consent to the CRM. Recommended: webhooks to a CRM function or a Marketplace extension, not Flow (Raah decides) | One path |
| Webflow forms | Zaps to Google Sheets or Mailchimp | Form submitted: a CRM contact with its lead source and Campaigns topics, plus the same sheet row where the team uses one | Webflow has no Zoho CRM connector |
| YouTube, podcast | Zaps create Webflow drafts | YouTube connector for videos; a daily check of the Spotify feed for episodes | The daily check needs custom functions |
Zoho One: 50 flows, 3,000 tasks plus 1,000 per employee a month; Zapier uses under 100. Open: whether Zoho One includes Flow's custom functions, which the podcast check needs and the Flow trial asked to upgrade for. The polling interval is undocumented; confirm in the sandbox.
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| A gift | Keyed in Funraise, reconciled into Books by hand | CRM record first, then Books through the sync | Jaspreet's rule, confirmed by the docs |
| Contacts, accounts, items | Kept separately in Books | Two-way sync with the first Books organisation; must share the CRM's USD | Only one org can be two-way |
| UK and Canada orgs | Rabia said three organisations; we see one | Master data one-way only, no transactions | Documented limit |
| Payments received | Booked in Books | Not documented as syncing to the CRM | Gap to confirm |
Ask Jaspreet: how many Books organisations, and which Stripe account maps to which.
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Website forms | Webflow forms zapped to Google Sheets or Mailchimp, or sending a notification email only | One flow per form: a CRM contact with its lead source and Campaigns topics, plus the same Google Sheet row where the team uses one | Webflow has no Zoho CRM connector |
| Newsletter sign-ups | Three kinds of form sending straight to Mailchimp | The Mailchimp code replaced by a Webflow form in the same spot; Flow to the CRM, which passes the topics to Campaigns | A submission that goes straight to Mailchimp never reaches the CRM |
| Gift Aid declaration | The Webflow declaration form no longer exists; its zap has been off since November 2024 | Gift Aid declared on each new UK donation, from the UK donation page's answer (proposed); any standalone form is open with Shevya | Requirement |
| Google Forms and Typeforms | Sidak, alumni and volunteer Google Forms; member forms and surveys on Typeform | Zoho Forms for the forms, straight to the CRM; Zoho Survey for the surveys, not connected. Each on its own page, ending on a sikhri.org thank-you page so Google Analytics records it | Typeform's Zoho link only creates new leads |
| Report gating | Free e-books sold at $0 in Shopify; a hidden download form on each sikhri.org resource | Resource downloads link straight to the file with no email asked, and the hidden form stays disabled (Form Migration Plan v5). Whether the free e-books leave the store is open with Gurjot | Removes 265 zero-order "customers" |
| Facebook lead ads | Zap to Mailchimp per campaign | LeadChain (free) writes each lead to a CRM contact in real time | Zoho Social lead forms are deprecated |
Each form, its route, lead source and topics are listed in the Form Migration Plan v5, under review with SikhRI and Raah.
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Online giving | 4 active Funraise forms on 3 Stripe accounts, PayPal and iATS | Three Stripe donation pages, US, Canada and UK, built by Raah and agreed with SikhRI | One record per gift, in the CRM |
| Data to the CRM | Funraise API and webhook | Each payment creates its donation: entry mode Online, entity from the region, fund from the page, payment method from Stripe, channel Online form, Gift Aid declared from the UK page's answer, and the campaign information set out in Donation Flow Data Requirements v4 (proposed) | Entity, fund, channel and payment method are needed on every donation |
| Books | Reconciled by hand | From the CRM, like every other donation; Books reads the amount in the currency given | A gift is a CRM record first |
| Recurring | 30 active plans on Funraise | A recurring plan record for each Stripe subscription, with each payment linked and failed charges counted. The requirement is that each active plan carries on from the new Stripe setup with the card already on file, without the donor entering it again; a plan is cancelled in Funraise the day it starts on the new setup (proposed) | Nobody is charged twice |
| Donor notices | Donors cancel by emailing Shevya | An email to the donor when a recurring charge fails, and 30 days before the card on file expires (proposed) | Both are mandatory in the requirements |
To test: a donation on each of the three pages arrives with entity, fund, channel and payment method set; a test subscription creates its plan, links two payments, records a failed charge, then a cancellation. Ask Jaspreet: whether the Stripe accounts the 30 active plans were charged through are the accounts Raah has connected.
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Registrations | Export, then a Mailchimp tag by hand | Flow creates a Registration with source on the contact | Manveer's biggest ask |
| Check-in | Volunteers use a Google Sheet; zero check-ins in Eventbrite for 2026 | Volunteers check in on Eventbrite; Flow records attendance | Attendee tag is empty otherwise |
| 2025 and 2026 history | Only in the sheet | Mapped back by email once | Or attendance for those events is lost |
| Discovery | About 10% of registrations from Eventbrite search | Kept | Backstage has none |
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Events platform | Eventbrite Free, no CRM link | Eventbrite plus Flow, or a Luma trial; Backstage only if one vendor is worth C$3,492 a year | Cost, on the To-confirm slide |
Backstage plans
| Plan | Attendees | CRM sync | Check-in app |
|---|---|---|---|
| Free (in Zoho One) | 100 per event, single day | No | Yes |
| Essentials | 200 | No | Yes |
| Premium | 1,000 | Yes, with Flow and webhooks | Yes |
| Ultimate | 5,000 | Yes | Yes |
Zoho One grants Free plus one Premium event. Zoho list prices, CAD, before tax: Essentials C$124 a month billed yearly · Premium C$291 a month billed yearly, C$349 month to month, C$749 per event · Ultimate C$541 a month billed yearly. Extra attendees C$0.60 each.
| Before (today) | After (in Zoho) | Why | |
|---|---|---|---|
| Board reports | Funraise dashboards, Shevya only; marketing asks her for numbers | One fundraising dashboard in Zoho Analytics, opened from a tab in the CRM, for the fundraising team, leadership and marketing (proposed) | One place for the numbers |
| Target vs Actual | Shevya's planner sheet, which Funraise cannot hold | The sheet stays as the source, with Shevya as the only editor; Zoho Analytics reads it and draws Target vs Actual against CRM actuals. Proposed layout: year, PI line, month, target, threshold, close date | Harinder's call: one structured file, one editor |
| Daily feed | Funraise API to the warehouse | CRM Bulk Read, alongside Books and Campaigns | Documented |
| Donor PII | Never in the warehouse | Still never; hashes and IDs only | Standing rule |
Sources: Mailchimp API (513 calls), Funraise API and admin, the SikhRI warehouse, Eventbrite API (122 calls), Shopify Admin API and admin, four Zapier exports (44 zaps), Zoho documentation (93 confirmed claims), the CRM Requirements workbook, twelve SikhRI meeting transcripts and eighteen email threads. People were counted by hashed email only. Draft v13. Skyrocket Digital for the Sikh Research Institute.