| 1 | Close the sale Deposit collected if applicable. Note: contract is signed by PM after mockup approval — not at this stage. | CEO |
| 2 | Send client questionnaire Business name, industry, location, services, target cities, competitors, brand colors, logo, reference sites, GBP details. | PM (Tori) |
| 3 | Send invoice Invoice sent ONLY after questionnaire is fully completed. Zero work before payment confirmed. | CEO |
| 2A | Review and enrich intake PM reviews questionnaire for completeness. If anything is missing, unclear, or needs added context, PM cleans the submission and adds supplemental notes before the workflow runs. | PM (Tori) |
| 2B | n8n workflow triggers — auto or manual On questionnaire submission n8n fires automatically. If intake must be revised, supplemented, or rerun, PM uses the manual trigger to send the updated payload to the same n8n workflow. System logs run source, editor, timestamp, and version. | AUTO / PM |
| 5 | Claude generates full site content package E-E-A-T optimized content for all pages: Homepage, About, Services parent, 3-5 service pages, Areas parent, 3-5 location pages (unique content each). | AUTOMATED |
| 6 | PM confirms generation + creates Trello card PM confirms workflow ran successfully. Attaches latest content package to Trello card. Card name: [Client Name] — [Project Type]. Due date set. Developer auto-assigned. | PM (Tori) |
| 7 | Move card to Queue All assets attached. Developer auto-assigned — confirm assignment is active. | PM (Tori) |
The questionnaire submission triggers n8n automatically. If PM needs to revise or supplement the intake (step 2A), the manual trigger sends the updated payload to the same downstream workflow — not a second content-generation path. This prevents output drift and keeps QA and troubleshooting clean. System logs capture run source, editor, timestamp, and version. PM confirms successful generation before moving the card.
Deliverable 1 — Homepage Mockup
| 1 | Pick up card from Queue Add yourself as card member. Comment target Phase 1 completion date. | Dev |
| 2 | Create Hostinger temp domain + install WordPress Format: [clientname]-preview.[yourdomain].com. Note URL in card description. | Dev |
| 3 | Select + import Envato Elements template kit Visit elements.envato.com/wordpress/template-kits — choose a kit suited to client industry and import it before building anything. | Dev |
| 4 | Install all standard plugins Elementor, Elementor Pro, Rank Math PRO, UpdraftPlus, MainWP Child, Site Kit by Google. Note: Wordfence hash import and AltText.ai configuration happen at Finalization. | Dev |
| 4b | Settings → Reading: Check "Discourage search engines from indexing this site" Enable this immediately after WordPress is installed on the temp domain. Prevents Google from indexing the temporary URL and creating duplicate content or incomplete index entries before the site launches on the real domain. | Dev |
| 5 | Set Global Colors + Fonts in Elementor Do this BEFORE building any page. Use brand colors and fonts from questionnaire. | Dev |
| 6 | Build homepage using AI content package Hero, About, Services (3-5 cards), Why Choose Us, Service Areas, Contact CTA. | Dev |
| 7 | Move card to Send to QA Comment with temp domain link. Tag @tori370. | Dev |
| 8 | QA reviews within 24 hours Annotates in Atarim only. See QA D1 checklist in QA Standards section. | QA |
| 9 | Dev implements Atarim items 1 business day. Comment "All Atarim items resolved." | Dev |
| 10 | Card moves to Sent to Client — Mockup Approval PM sends mockup link via email and/or Dialpad. Client reviews: APPROVED (PM signs contract, advance to D2) | ADJUSTMENTS (PM notes revisions in card, advance to D2) | NEW DIRECTION (Dev selects new Envato kit, restarts QA cycle). | PM (Tori) |
Phase 1 Deliverable 2 — Full Site Rough Draft
| 1 | Build all interior pages About, Services parent, 3-5 service pages (unique content each), Areas parent, 3-5 location pages (unique city content each), Contact. | Dev |
| 2 | Complete site navigation Header + footer nav. All pages linked. Zero 404s. All # links replaced with correct targets. | Dev |
| 3 | Move card to Send to QA (D2) Comment with temp domain link. Tag @tori370. | Dev |
| 4 | QA full site review within 24 hours All # links, Lorem Ipsum, image relevance checked across every page. | QA |
| 5 | Dev implements D2 Atarim items 1 business day. Comment "All D2 Atarim items resolved." | Dev |
| 6 | PM sends D2 email + Atarim invite Use D2 email template. Includes site link AND Atarim guest collaboration link. | PM (Tori) |
Do not wait for client revisions to finish before starting SEO. Both tracks run at the same time.
Track A — Developer: Client Revisions
| 1 | PM collects all client Atarim feedback Once 5-7 day window closes or client signals done. PM also notes anything from Dialpad calls. | PM (Tori) |
| 2 | Move card to ATARIM Revisions Tag @wordpress611 with summary of all changes needed. | PM (Tori) |
| 3 | Implement all client revision requests Work through every Atarim annotation from the client. | Dev |
| 4 | Comment when revisions complete "All client revisions implemented." Tag @tori370. | Dev |
Track B — QA: On-Page SEO
| 1 | Configure Rank Math — Business Information Local SEO module: Business name, address, phone, hours, logo URL. Must match Google Business Profile exactly. | QA |
| 2 | Determine focus keywords per page Homepage: [Primary Service] + [City, State]. Service pages: unique [service] + [city]. Location pages: unique [service] + [city]. No two pages share a primary keyword. | QA |
| 3 | Add focus keywords in Rank Math 1 primary + 2 additional per page. All pages must reach green score. | QA |
| 4 | Run n8n metadata workflow n8n dashboard → 'Rank Math Metadata Generator' → enter site URL → trigger. Auto-generates title tags + meta descriptions for every page. Verify output. | QA |
| 5 | Apply inner linking Homepage → service pages. Service area parent → location pages. Cross-link related services. Use keyword-rich anchor text throughout. | QA |
| 6 | Configure 404 Monitor + 301 Redirects Enable 404 Monitor in Rank Math PRO. For redesigns: map all old URLs to new pages in Redirections module. Test each redirect. | QA |
| 7 | Generate WordPress Application Password WP Admin → Users → Your Profile → Application Passwords → Add New. Label it n8n-rankmath. Copy the password and immediately add it to the master spreadsheet with the site URL, username, and password. | QA |
| 8 | Verify all pages green in Rank Math after n8n workflow After the metadata workflow runs, spot-check every page for green Rank Math score. Yellow is acceptable. Red is not. | QA |
| 9 | Comment when SEO track complete "Phase 2 SEO complete — Rank Math configured, metadata applied via n8n, inner linking done, 404/301 set, application password logged in master spreadsheet." Tag @tori370. | QA |
Phase 2 Completion Gate
Both tracks must be complete. PM reviews and gives approval. Card moves to Project Completed only after PM confirmation in Trello.
During build (Phase 1 onwards on temp domain): Settings → Reading → Discourage search engines from indexing this site must be checked ON to block Google from indexing the temp domain and creating duplicate content or premature index entries.
At Finalization (after DNS propagates to live domain): This must be unchecked OFF so the live site can be crawled and indexed by Google. Do not go live with this still enabled.
Schema markup references the live domain URL. If schema and the n8n metadata workflow are configured on the temp domain, all structured data points to the wrong URL and is ineffective in search. All focus keywords, the n8n metadata workflow, inner linking, and schema must run after DNS propagates and the site is live on its permanent domain.
SMTP — Gravity SMTP + SMTP2GO
Do not use the visitor's email as the From address — breaks DMARC alignment and causes deliverability failures.
Do not run multiple SMTP plugins simultaneously — Gravity SMTP is the only mail layer.
Do not use single-sender verification when the domain has DMARC — use SMTP2GO domain verification instead.
Do not add a dedicated IP for normal low-volume form traffic.
On-Page SEO — Rank Math + n8n Metadata Workflow
Schema Markup
Use the most specific subtype: Plumber, Restaurant, LegalService, DentalClinic, RoofingContractor, etc. All fields below required.
reCAPTCHA + Security
Add-Ons (If Purchased)
Set this expectation with the client BEFORE making the DNS change. Do not mark the project complete until the live URL resolves correctly.
| 1 | Run a manual UpdraftPlus backup Before touching anything on launch day. | Dev |
| 1b | Settings → Reading: Uncheck "Discourage search engines from indexing this site" This was enabled during the build to block temp domain indexing. It must be OFF before the site goes live so Google can crawl and index it after DNS propagates. | Dev |
| 2 | Point DNS to Hostinger Update nameservers or A record. Notify PM and client of 24-72hr propagation window. | Dev |
| 3 | Update WordPress site URL Settings → General → both WordPress Address AND Site Address → https://www.domain.com | Dev |
| 4 | Force HTTPS + flush caches Confirm SSL active. Settings → Permalinks → Save. Clear caching plugin. | Dev |
| 5 | Final QA on live domain Every page + form test on real URL. PM confirms. | PM (Tori) |
| 6 | Submit sitemap to Search Console https://domain.com/sitemap_index.xml via Site Kit or GSC directly. | Dev |
| 7 | CEO final sign-off CEO reviews live site. Official go-ahead given. | CEO |
| 8 | Move card to $$ Project Completed $$ Note live URL in card. Send launch confirmation email to client. | PM (Tori) |
1. Address card within 24 hours of hitting any QA column.
2. Use Atarim ONLY — click the element → leave a note. Never edit the site directly.
3. When done: comment in Trello "QA complete — [X] items in Atarim." Tag @wordpress611 and @tori370.
4. Do NOT move the Trello card. That is the Developer's job after fixes are complete.
How to Use Atarim
| 1 | Open Atarim dashboard Log in to JABstract Atarim account. Find the project by the temp domain URL in the Trello card. |
| 2 | Navigate to the page Use Browse mode in Atarim to go to the page you want to annotate. |
| 3 | Switch to Comment mode Use the toggle at the bottom of the Atarim tool. |
| 4 | Click the element with the issue Click directly on the image, text, button, or section. A comment box appears. |
| 5 | Write a clear, actionable note Example: "This image shows a restaurant — client is a plumber. Replace with plumbing-related image." |
| 6 | Repeat for all pages in scope Work through every page systematically. Do not skip pages. |
| 7 | Comment in Trello when complete "QA complete — [X] items in Atarim." Tag @wordpress611 and @tori370. |
D1 QA Checklist — Homepage Mockup
Buttons and menu links do NOT need to work in D1. Focus on visual and content accuracy only.
D2 QA Checklist — Full Site Rough Draft
Phase 1 D1 — Homepage Mockup Delivery
Follow-Up — Client Unresponsive (D1)
Phase 1 D2 — Full Site Delivery + Collaboration Invite
Launch Confirmation
Footer Standard — Required 4-Column Layout
Every footer must have exactly this structure. QA will flag any deviation.
Copyright Line HTML
Copyright © [Year] [Company Name] | Powered by <a href="https://jabstract.net" target="_blank" rel="noopener noreferrer">JABstract Web Design and SEO</a>
Header Standard
Homepage Required Sections
| Section | Requirements |
|---|---|
| Hero | Headline must include [Primary Service] + [City, State]. Subheadline. Primary CTA button. |
| About Us | 3-4 sentences. Business story, trust signals. From n8n/Claude content. |
| Services | 3-5 service cards. Each with title + 2-sentence description. |
| Why Choose Us | 4 differentiator bullet points. |
| Service Areas | All target cities listed. Geo-targeted for Google Maps Pack. |
| Contact CTA | Phone number prominent. Form or CTA driving calls. |
Wordfence Options Hash
Import on every new install. Wordfence → All Options → Import/Export → Paste hash → Import.
e1bf94c75158e3a89f29baf84ab54fa3eb8471d9d8605e9d51ad870b7cc3493fc5dfe2456bf1b6c331fa875e64f70460e79d8b138fa93a4d492793202e311aea
Universal Rules — Everyone
- ›Always tag the person you're addressing with @username. No untagged comments.
- ›Never skip a column. Cards move in order. A stage is not done until it's done.
- ›All project communication goes in Trello card comments. Not texts. Not DMs.
- ›Update due dates immediately when they change. Comment explaining why.
Create a fresh API token, paste it into the script, run the script, verify success, then delete the token immediately. Never reuse old tokens. Never leave long-lived credentials behind.
These scripts replace all custom WAF rules in the zone entrypoint ruleset with the five rules in the script. They do not append to existing rules.
If a zone already has custom firewall rules you need to preserve — stop and back them up first.
Use a brand-new API token every time.
What the Scripts Change vs. Don't Change
| Scope | Detail |
|---|---|
| CHANGES | SSL mode → Strict. Always Use HTTPS → On. Minimum TLS version → 1.2. Zone custom WAF entrypoint ruleset — replaced with 5 standard rules. |
| DOES NOT CHANGE | Managed rulesets, transform rules, cache rules, rate limiting rules, bot settings, and unrelated Cloudflare products outside the custom WAF ruleset. |
Token Creation — Step by Step
| 1 | Log into Cloudflare Go to My Profile → API Tokens. |
| 2 | Create Token → Create Custom Token Name it clearly: e.g. JABstract WordPress baseline one-time run |
| 3 | Add three permissions Zone / Zone / Read · Zone / Zone Settings / Edit · Zone / WAF / Edit |
| 4 | Set resource scope All zones (for all-zones script) or specific domain (for single-zone script). |
| 5 | Leave Client IP Filtering empty Unless you are certain of the runner's public IP. If you get a 403/9109 error, recreate the token without IP filtering. |
| 6 | Create token — copy it immediately Cloudflare only shows the token secret once. Copy it now. |
Operator Sign-Off Checklist
Common Failures
| Problem | Fix |
|---|---|
| 403 Forbidden — code 9109 | Token is restricted to a different public IP. Recreate the token without Client IP filtering, or update the allowed IP. |
| No zones found | Token was pasted incorrectly, already deleted, missing Zone Read permission, or scoped to the wrong zone. |
| Zone not found | Single-zone script is using the wrong zone name. Use the exact zone name from Cloudflare dashboard. |
| WAFRules failed | Token is missing Zone WAF Edit permission, or Cloudflare returned a permission/ruleset error. Check the response body in output. |
All live client sites are managed from master.jabstract.net via the MainWP dashboard. Plugin updates, security scans, uptime monitoring, and backup verification all happen from one central location. Never update plugins directly from individual site WP-Admin dashboards.
MainWP Connection Setup
| 1 | Install and activate MainWP Child plugin Install on every new site during the plugin setup phase. Activate immediately. | Dev |
| 2 | Connect site to master.jabstract.net In the MainWP Child plugin settings, enter the MainWP master dashboard URL: master.jabstract.net. Use the connection token generated from the master dashboard. | Dev |
| 3 | Verify connection in MainWP master dashboard Log in to master.jabstract.net. Confirm the new site appears under Sites and shows as Connected. Sync the site to pull current plugin/theme/WordPress version data. | Dev |
| 4 | Configure automated checks In MainWP master: enable uptime monitoring, set backup verification schedule, confirm Wordfence scan integration is active for the site. | Dev |
| 5 | Confirm MainWP Child remains installed at all times Do not remove or deactivate MainWP Child on any live site without CEO approval. | Dev |
Routine Maintenance Cadence
| Task | Frequency | Done Via | Owner |
|---|---|---|---|
| Plugin updates | Weekly | MainWP master dashboard | Dev |
| WordPress core updates | As released (after 48hr delay) | MainWP master dashboard | Dev |
| Theme updates | Monthly or as available | MainWP master dashboard | Dev |
| Security scan review | Weekly | MainWP + Wordfence integration | Dev |
| Backup verification | Weekly | UpdraftPlus via MainWP | Dev |
| Uptime monitoring | Ongoing (automated alerts) | MainWP uptime monitor | PM notified on alert |
| Performance check | Monthly | Site Kit by Google / PageSpeed Insights | Dev / QA |
Post-Launch Revision Intake via Atarim
Once a site is live and handoff is complete, Atarim becomes the only accepted intake channel for future website edit requests. Any revision request that arrives by email, text, or phone call gets redirected to Atarim before any work is triaged or scheduled.
Revision Triage Categories
| Category | Definition | Action |
|---|---|---|
| Included Support | Minor text/image swap, broken link, small visual fix covered under the client's plan | PM assigns to Dev. No billing. Complete within agreed SLA. |
| Billable Revision | Content rewrite, new section, page addition, design change outside original scope | PM sends quote to client first. Work begins after written approval. |
| Bug Fix | Something broken that was working at launch | PM assigns to Dev with priority flag. Fix first, document cause after. |
| Quote Needed | New feature, new page type, new integration, or significant structural change | PM escalates to CEO for scoping and pricing before any response to client. |
Plugin Update Protocol (from MainWP)
Handoff Email Template
Do not wait until the site is nearly done to collect access. PM should reach out for all platform access during the intake phase, as soon as the client is moved to Queue. Delayed access = delayed launch.
Access Collection Checklist
Google Business Profile — Setup Flow
Scenario A: Client Already Has a GBP Listing
| 1 | Request Manager access to the existing GBP Ask the client to go to their Google Business Profile and add the JABstract Google account as a Manager (not Owner). Walk them through it via Dialpad if needed. | PM (Tori) |
| 2 | Audit the existing listing Check: business name, address, phone, website URL, hours, categories, photos, description. Note any discrepancies vs the client questionnaire. | PM (Tori) |
| 3 | Align GBP NAP with website NAP The name, address, and phone on GBP must match the website footer exactly — same format, same abbreviations. Update one to match the other. GBP is the source of truth. | PM / Dev |
| 4 | Update GBP website URL to live domain Once the site is live, update the website URL field in GBP to the live domain. Do not point GBP to the temp domain at any stage. | PM (Tori) |
Scenario B: Client Has No GBP Listing
| 1 | Create a new Google Business Profile Use the client's Google account if they have one, or create a new Google account for the business. Go to business.google.com and start the listing creation. | PM (Tori) |
| 2 | Add the business owner as a Manager immediately As soon as the listing is created, invite the business owner's Google account as a Manager. This ensures they have access and JABstract does not become the de-facto owner of their listing. | PM (Tori) |
| 3 | Fill in all listing details Business name, primary category, address (or service area for SABs), phone number, website URL (use live domain — not temp), hours, description using keyword-rich copy from the content package. | PM (Tori) |
| 4 | Initiate address verification Google will require the business to verify its address — typically by postcard, phone call, or video verification. Inform the client what to expect. JABstract cannot complete this step for them. | PM (Tori) |
| 5 | Follow up on verification status If using postcard verification: postcard arrives in 5-14 days. Follow up with the client via Dialpad to confirm receipt and help them enter the verification code. Log all follow-ups in Trello card. | PM (Tori) |
| 6 | Complete listing after verification Add business photos (exterior, interior, team, logo), complete the Q&A section, confirm NAP matches website footer exactly. | PM (Tori) |
GBP + Website NAP Alignment Checklist
How to Tell the Difference
| New Build | Redesign | |
|---|---|---|
| Existing site | No | Yes — live site must stay up during build |
| Existing indexed URLs | No | Yes — must be preserved or 301 redirected |
| Existing content | None to migrate | May need to migrate text, images, blog posts |
| Client Google Analytics | New GA4 property | Existing property — preserve historical data |
| 301 Redirects | Not required | Required for all changed URLs |
| Risk level | Low — nothing to break | Higher — existing rankings at risk if done wrong |
Redesign Checklist
All links below open in a new browser tab. Make sure you are logged in to the appropriate Google account before accessing shared spreadsheets.
For every active Local Growth client, the Project Manager owns: deliverable completion, monthly reporting, client communication, and escalation to CEO for any scope changes or upsell opportunities. Ads Manager is looped in for clients that include paid ad management.
Service Tiers — What's Included
Monthly Workflow — Project Manager
| W1 | Content production starts Commission SEO blog drafts via n8n/Claude workflow (2 for Foundation, 4 for Growth+). Assign social post for the week. Begin press release if scheduled this month. Log all content tasks in Trello. | PM |
| W2 | GBP + citation audit Check GBP for new reviews — respond to all within 48 hours (24 hours for Domination). Run citation check across 50+ directories. Upload new GBP photos (min 2 this week). Confirm business hours, services, and description are current and accurate. | PM |
| W3 | Content publish + backlinks (Growth+) Publish SEO blogs to client's WordPress site. Configure Rank Math on each post (focus keyword, meta title, meta description). Log published URLs in Zoho CRM contact notes. For Growth+ clients: initiate backlink outreach or directory submissions. Upload week 3 social post. | PM |
| W4 | Monthly report — pull data from Ahrefs + Zoho Open Ahrefs → client's project → Rank Tracker (keyword positions), Site Explorer (new backlinks), Report Builder (compile monthly PDF). Pull GBP insights from the GBP dashboard. Pull Search Console data via Site Kit. Compile report by the 7th (Foundation/Growth) or 5th (Domination). Send to client via email. Log delivery in Zoho CRM. | PM |
Monthly Deliverable Tracker
Add each active Local Growth client below. Deliverables are saved to the shared database so all team members see the same status. Reset at the start of each month.
Ahrefs — Monthly SEO Reporting SOP
Every monthly report sent to a Local Growth client is built from Ahrefs data. Rank Tracker tracks keyword positions. Site Explorer tracks backlinks and domain authority. Report Builder generates the client-ready PDF. Do not manually compile reports from screenshots — use Report Builder.
Step 1 — Set Up a Project in Ahrefs (New Client Onboarding)
| 1 | Log in to Ahrefs → Projects → Add New Project Enter the client's live domain (e.g. clientdomain.com). Set the project name to the client's business name exactly as it appears in Zoho CRM. This keeps all reporting data organized and searchable. | PM |
| 2 | Connect Google Search Console In the project settings, connect the client's GSC account. This pulls organic click and impression data directly into Ahrefs for unified reporting. Requires the client's Google account to have Search Console access already set up (done during site launch). | PM |
| 3 | Add target keywords to Rank Tracker In the project → Rank Tracker tab → Add Keywords. Add: (1) all primary service keywords targeted by the homepage and service pages, (2) all target city+service combinations from location pages, (3) brand name keywords. Set location to the client's primary city. Track frequency: weekly. | PM |
| 4 | Set up email alerts for ranking changes In Ahrefs → Alerts → Rank Tracker Alerts. Set up weekly alert for the project to send to PM's email. Alert triggers when any tracked keyword moves more than 3 positions up or down. This ensures PM is aware of significant ranking changes without manual checking. | PM |
| 5 | Run initial Site Explorer baseline In Site Explorer → enter client domain → Overview tab. Screenshot or note: Domain Rating (DR), total referring domains, total backlinks, estimated organic traffic, and number of keywords ranking in top 10. Save this as the month-0 baseline in the client's Zoho CRM record. This is what you'll compare against each month. | PM |
| 6 | Build the client's report template in Report Builder Ahrefs → Report Builder → New Report. Add widgets: Rank Tracker summary, keyword position changes (last 30 days), new referring domains (last 30 days), organic traffic trend. Save this as a template for the client. Each month, open this saved template → update date range → export PDF → send to client. | PM |
Step 2 — Monthly Report Execution (Every Month, by the 7th)
| 1 | Open Ahrefs → client project → Report Builder Open the saved report template for this client. Update all date ranges to "last 30 days" (the prior calendar month). Do not use rolling 30 days if the report is being sent after the 1st — lock the date range to the exact month being reported. | PM |
| 2 | Pull keyword ranking data from Rank Tracker Rank Tracker → select the date range → review positions for all tracked keywords. Note: keywords that moved into top 3, keywords that dropped more than 5 positions, any new page 1 entries. This data feeds the "Search Visibility" section of the report. Screenshot the position history chart for top 5 keywords. | PM |
| 3 | Pull backlink data from Site Explorer Site Explorer → client domain → Backlinks → filter "New" links, last 30 days. Note: number of new referring domains acquired, DR of notable new links. Screenshot the referring domains trend chart. For Growth+ clients: verify backlinks from outreach work are appearing as indexed. | PM |
| 4 | Pull GBP insights from Google Business Profile dashboard Log in to the client's GBP → Performance tab → select prior month date range. Record: Searches (direct + discovery + branded), Views (Search + Maps), Actions (website clicks, calls, direction requests). This data goes directly into the report GBP section — do not estimate or use rounded numbers. | PM |
| 5 | Export the Ahrefs PDF report + compile full client report In Report Builder → Export → PDF. Add a cover page with client name, month, and JABstract branding if available. Combine Ahrefs PDF with: GBP data (paste into a summary page), GSC data, content published URLs, review count, and backlinks acquired. Use the monthly report email template to send. Log delivery date in Zoho CRM activity. | PM |
GBP Insights: Views, calls, direction requests, actions (compare to prior month)
Keyword Rankings: Top movers up and down from Ahrefs Rank Tracker
Organic Traffic: Month-over-month trend from Ahrefs + GSC
Backlinks: New referring domains acquired this month (Site Explorer)
Domain Rating: Current DR vs prior month baseline
Content Published: Title + URL of each blog article published
Social Posts: Count of posts published + platform
Reviews: New review count, current average rating, any notable responses
Next Month Focus: 2–3 bullet points on what's being prioritized
Zoho Books — Client Billing & Payment Portal SOP
All client invoices are created and managed in Zoho Books. Clients access invoices and make payments through the Zoho Books Customer Portal. CEO creates invoices. PM monitors payment status and follows up on overdue accounts.
New Client Setup in Zoho Books
| 1 | Create the client as a Contact in Zoho Books Zoho Books → Contacts → + New Contact. Enter: contact name (business owner), company name (exact business name as on GBP), email address (primary billing contact), phone, billing address. Set Currency to USD. This contact will be used for all future invoices — accuracy is critical. | CEO |
| 2 | Enable the Customer Portal for this contact In the Contact's detail page → More → Configure Customer Portal. Select the contact person (or all contacts) to grant portal access. Click Enable. Zoho Books automatically sends an invitation email to the client with a link to set their portal password. The portal URL is auto-generated from your Zoho Books organization name. | CEO |
| 3 | Confirm client receives and accepts the portal invite Client clicks the invite link in the email and sets a password. Once set up, they can log in to the portal at any time to view invoices, payment history, and download receipts. PM follows up via Dialpad if client hasn't accepted within 48 hours of invite send date. | PM |
| 4 | Verify payment gateway is connected Zoho Books → Settings → Payment Gateways. Confirm at least one gateway is active (Stripe, PayPal, or Authorize.net recommended). Without a payment gateway connected, clients cannot pay online from the portal. CEO manages gateway setup — do not add or change payment gateways without CEO approval. | CEO |
Monthly Invoice Creation + Sending
| 1 | Create recurring invoice in Zoho Books (one-time setup) For all monthly retainer clients: Zoho Books → Sales → Recurring Invoices → + New Recurring Invoice. Set: customer name, service line item (e.g. "Local Growth — Growth Package"), amount, frequency = Monthly, billing date = 1st of each month. This auto-generates invoices each month — CEO reviews before sending. | CEO |
| 2 | Send invoice to client (auto or manual) Recurring invoices can be set to auto-send on the billing date, or held for CEO review first (recommended). When sending: Zoho Books includes a "Pay Now" button in the email. Clicking it opens the client portal payment page. Client does not need to log in — they can pay directly from the email link. Payment gateway must be connected for this to work. | CEO |
| 3 | Share payment link directly (alternative method) For one-off invoices or clients who lost the email: Zoho Books → Sales → Invoices → select invoice → Share → Generate Link. Set expiration date. Set Visibility = Public. Share the generated link via email or text. Client can pay without logging in. This method is faster for one-time projects. | CEO |
| 4 | PM monitors payment status + follows up on overdue invoices PM checks Zoho Books → Sales → Invoices → filter "Overdue" — every Monday morning. Any invoice overdue by 7+ days: PM sends a follow-up email and calls via Dialpad. Any invoice overdue by 14+ days: escalate to CEO. Log all follow-up attempts in Zoho CRM contact activity. Do not pause services without CEO approval. | PM |
Client — How to Access the Payment Portal
Zoho Books Reporting — What the CEO Tracks
| Report | Where | Purpose | Frequency |
|---|---|---|---|
| Accounts Receivable | Zoho Books → Reports → Receivables → Accounts Receivable | See all outstanding client balances — who owes what and for how long | Weekly (Monday) |
| Invoice Details | Reports → Sales → Invoice Details | Full list of all invoices sent, status (paid/overdue/draft), and amounts | Monthly |
| Payment Received | Reports → Sales → Payments Received | All payments collected in a date range — for revenue reconciliation | Monthly |
| Portal Activities | Reports → Activity → Portal Activities | See when clients viewed invoices, made payments, or updated their info | As needed |
Never mark an invoice paid manually unless you have confirmed receipt of offline payment (check, ACH outside portal). All online payments record automatically.
Never delete an invoice — void it if it was sent in error. Deleted invoices leave gaps in the record.
Never share CEO's Zoho Books login with clients — use the Customer Portal only.
All billing questions from clients go to CEO. PM redirects billing inquiries — does not discuss pricing, discounts, or payment terms without CEO approval.