INTERNAL DOCUMENTATION HUB

Administrative Assistant SOPs

Step-by-step instructions for recurring administrative tasks.

INTERNAL KNOWLEDGE BASE

Standard Operating Procedures

Core procedural guidelines, operational workflows, and verified status checklists for tutoring operations.

1. Writing and Publishing a Blog

Writing and Publishing a Blog
Purpose

This SOP explains how to select an assigned SEO topic, generate a complete article using GoHighLevel’s AI Blog Builder, review and publish it, request indexing through Google Search Console, and share it in the E-Z Tutoring Facebook group.

Tools Needed
GoHighLevel (Blogs) College Board website Google Search Console Facebook (Alexander’s account)
1 STAGE 1: SELECT THE WEEK’S TOPIC
2026 Blog Content Calendar
September 2026
DoneWeekSEO TopicPrimary Keyword
Week 1August 2026 SAT Scores Are Out: What Your Score Means and What to Do NextAugust 2026 SAT score release
Week 1September 2026 SAT Predictions: Topics, Difficulty, and Last-Minute PreparationSeptember 2026 SAT predictions
Week 2September 2026 SAT Last-Minute Predictions and Test-Day ChecklistSeptember 2026 SAT last-minute predictions
Week 2September 2026 SAT Recap: Was the Test Harder Than Expected?September 2026 SAT test recap
Week 3October 2026 SAT Predictions: What Students Should Start Preparing for NowOctober 2026 SAT predictions
Week 3October 2026 SAT Registration Deadline: Dates, Late Fees, and What to KnowOctober 2026 SAT registration deadline
Week 4September 2026 SAT Scores Are Out: Should You Retake the SAT in October?September 2026 SAT score release
Week 4October 2026 SAT Final Predictions: Most Important Math and Reading TopicsOctober 2026 SAT final predictions
October 2026
DoneWeekSEO TopicPrimary Keyword
Week 1October 2026 SAT Predictions: What to Expect on the October 3 TestOctober 2026 SAT predictions
Week 1October 2026 SAT Last-Minute Study Plan: What to Do Before Test DayOctober 2026 SAT last-minute study plan
Week 2October 2026 SAT Recap and Score Predictions: How Difficult Was the Test?October 2026 SAT score predictions
Week 2November 2026 SAT Predictions: What to Study After the October SATNovember 2026 SAT predictions
Week 3October 2026 SAT Scores Are Out: How to Understand Your ResultsOctober 2026 SAT score release
Week 3Should You Retake the SAT in November After Receiving Your October Scores?retake SAT in November 2026
Week 4November 2026 SAT Registration Deadline: Everything Students Need to KnowNovember 2026 SAT registration deadline
Week 4November 2026 SAT Predictions: Math and Reading Topics Most Likely to MatterNovember 2026 SAT topic predictions
November 2026
DoneWeekSEO TopicPrimary Keyword
Week 1November 2026 SAT Final Predictions: What to Expect on the November 7 TestNovember 2026 SAT final predictions
Week 1November 2026 SAT Last-Minute Checklist: What to Do Before Test DayNovember 2026 SAT last-minute checklist
Week 2November 2026 SAT Recap and Score Predictions: Was the Test Difficult?November 2026 SAT score predictions
Week 2December 2026 SAT Predictions: What Students Should Study NextDecember 2026 SAT predictions
Week 3November 2026 SAT Score Release: When Scores Come Out and What Happens NextNovember 2026 SAT score release
Week 3December 2026 SAT Predictions: The Most Important Topics to ReviewDecember 2026 SAT topic predictions
Week 4November 2026 SAT Scores Are Out: Should You Retake the SAT in December?November 2026 SAT scores
Week 4December 2026 SAT Registration Deadline and Last-Minute Registration GuideDecember 2026 SAT registration deadline
December 2026
DoneWeekSEO TopicPrimary Keyword
Week 1December 2026 SAT Final Predictions: What to Expect on the December 5 TestDecember 2026 SAT final predictions
Week 1December 2026 SAT Last-Minute Study Plan and Test-Day ChecklistDecember 2026 SAT last-minute study plan
Week 2December 2026 SAT Recap and Score Predictions: How Hard Was the Test?December 2026 SAT score predictions
Week 2What to Do After the December SAT While Waiting for Your Scoreswhat to do after December SAT
Week 3December 2026 SAT Scores Are Out: How to Understand Your ResultsDecember 2026 SAT score release
Week 3December 2026 SAT Scores: Should You Retake the SAT in March 2027?retake SAT March 2027
Week 42027 SAT Test Dates and Deadlines: How to Plan Your Testing Schedule2027 SAT test dates
Week 4March 2027 SAT Predictions: How to Start Preparing During Winter BreakMarch 2027 SAT predictions
Dates must be verified

These topics are scheduled around the official fall 2026 SAT calendar. Before creating each article, confirm that its dates and deadlines are still accurate using the College Board website.

•
September 12 SAT: September 12, 2026
•
September score release: September 25, 2026
•
October SAT registration deadline: September 18, 2026
•
October late-registration deadline: September 22, 2026
•
October SAT: October 3, 2026
•
October score release: October 16, 2026
•
November SAT registration deadline: October 23, 2026
•
November late-registration deadline: October 27, 2026
•
November SAT: November 7, 2026
•
November score release: November 20, 2026
•
December SAT registration deadline: November 20, 2026
•
December late-registration deadline: November 24, 2026
•
December SAT: December 5, 2026
•
December score release: December 18, 2026
2 STAGE 2: OPEN THE BLOG AI BUILDER
1
Log in to GoHighLevel.
2
Click “Sites” in the left navigation panel.
3
Click “Blogs” at the top.
4
Open the blog site called “E-Z Tutoring Blogs.”
5
Click “Create Post With AI.”

Tip: Click the image to open a larger preview.

What to look for: The “Create Post With AI” button before starting the AI flow.

3 STAGE 3: GENERATE THE ARTICLE
1
In the AI panel on the left, select “Build” instead of “Assist.”
2
Copy the reusable prompt below.
3
Replace only the two fields at the top: Blog Topic and Primary Keyword.
4
Paste the entire prompt into the AI Builder.
5
Allow the AI to generate the article.
6
Review the generated article before continuing.
7
Click “Continue.”

Tip: Click the image to open a larger preview.

Warning

Never publish an AI-generated article without reviewing it. Confirm that all SAT dates, deadlines, policies, statistics, links, and score information are accurate.

Reusable Blog Prompt
Copy + paste into GHL AI Builder
BLOG TOPIC: [INSERT THIS WEEK’S SEO TOPIC]

PRIMARY KEYWORD: [INSERT THIS WEEK’S PRIMARY KEYWORD]

Create a complete, publication-ready blog post for E-Z Tutoring using the topic and primary keyword above.

## LENGTH REQUIREMENT

The COMPLETE BLOG ARTICLE in Part 3 must be **600–800 words total**, including the opening answer, introduction, body, Key Takeaways, and FAQ.

Aim for approximately a **3–4 minute read**.

Do not exceed 800 words. If the draft is longer, shorten it before returning the final article while preserving factual accuracy and the most useful information.

Prioritize usefulness and clarity over comprehensiveness. Cover only the main question and the most relevant supporting points. Do not try to cover every possible subtopic related to the keyword.

Keep:
- Opening answer: 2–3 concise sentences
- Introduction: approximately 40–60 words; do not repeat the opening answer
- Main body: 3–4 focused H2 sections, generally 80–120 words each
- Key Takeaways: 3 short bullets
- FAQ: 3 questions with concise answers, generally 25–40 words each

These section lengths are guidelines within the 600–800-word total, not separate quotas. Keep every section brief, avoid repeating information, and remove filler or optional subtopics before exceeding the word limit.

The word limit applies only to the visible article, not SEO metadata, research notes, image prompts, internal-link recommendations, or page-level custom code.

Research and determine:
- Search intent
- Target audience
- Useful secondary keywords
- Article structure
- Authoritative sources
- SEO metadata
- Internal-linking opportunities

Research the topic before writing.

Use current, authoritative primary sources whenever possible.

For official SAT dates, scoring, Bluebook, registration, policies, and test information, prioritize the College Board.

Verify every:
- Date
- Deadline
- Policy
- Statistic
- Score requirement
- Factual claim

Never invent:
- Facts
- Quotations
- Testimonials
- Statistics
- Student results
- E-Z Tutoring experiences

If something cannot be verified, omit it or clearly mark it for human review.

Write for high-school students and their parents in a confident, clear, practical, and expert tone.

The article should sound like it came from an experienced SAT educator, not a generic AI writer.

Use:
- Short paragraphs
- Direct explanations
- Useful examples
- Bullets
- Numbered steps
- Checklists
- Tables only when they genuinely make the article easier to understand

Avoid:
- Filler
- Repetition
- Keyword stuffing
- Unnecessary background information
- Fake urgency
- Unsupported score guarantees
- Exaggerated claims
- Fake personal stories
- Generic AI phrases such as:
  - “in today’s fast-paced world”
  - “unlock your potential”
  - “embark on a journey”
  - “delve into”
  - “game-changer”
  - “navigating the landscape”

Create one strong blog title that serves as the only H1.

GoHighLevel may automatically display the post title as the H1, so do not insert a second H1 inside the article body.

Immediately after the title, provide a concise two-to-four-sentence answer to the article’s main question.

It should make sense independently if quoted by:
- Google
- An AI Overview
- A voice assistant
- Another answer engine

Then include:

1. A short introduction explaining who the article is for and what the reader will learn.
2. A focused body organized with descriptive H2 headings.
3. H3 headings only when genuinely necessary.
4. Practical examples, steps, checklists, or a comparison table only when useful.
5. A short Key Takeaways section.
6. A FAQ section with 3 genuine follow-up questions and brief answers.
7. Do NOT include a visible final CTA. The page-level SAT Insider email capture code handles conversion.

Do not add sections simply to make the article appear more comprehensive.

Use the primary keyword naturally in:
- SEO title
- URL slug
- Introduction
- At least one appropriate heading
- Meta description
- Body

Naturally include a small number of closely related secondary keywords and relevant entities.

Do not stuff keywords or create sections solely to target secondary keywords.

## SEO DETAILS

Create:

- One H1 title
- One SEO title
- A short lowercase URL slug with hyphens
- A unique meta description of approximately 140–160 characters when practical
- A short blog-card excerpt
- A recommended category
- 3–6 relevant tags
- A cover-image concept
- A descriptive image filename
- Accurate alt text
- A complete AI image-generation prompt

Optimize for traditional search and AI-powered answers by including:
- A direct answer near the beginning
- Clear headings
- Concise answers beneath question headings
- Self-contained factual statements
- Clear definitions
- Specific dates when relevant
- Important information in visible text

Clearly distinguish official facts from E-Z Tutoring recommendations.

Link important factual claims to authoritative primary sources using descriptive anchor text.

## INTERNAL LINKS

Recommend **2–4 relevant internal links**.

Never invent E-Z Tutoring URLs.

If an exact URL is unavailable, use a clear placeholder such as:

[INTERNAL LINK: Related E-Z Tutoring article about Bluebook practice tests]

## EMAIL CAPTURE CTA

Do NOT place a traditional CTA button, promotional box, tutoring CTA, diagnostic CTA, cohort CTA, or final sales CTA inside the visible article body.

Do NOT add a CTA at the bottom of the article.

Instead, every blog must use the E-Z Tutoring SAT Insider email capture form as the primary conversion mechanism.

During the INITIAL BUILD of the blog, install the exact page-level Custom Code provided below using the blog’s Custom Code feature.

CRITICAL INSTRUCTIONS:

- This is PAGE-LEVEL custom code.
- It is NOT visible article content.
- Do not paste this code into the article body.
- Do not display the code as text.
- Install the code exactly ONCE.
- Do not create multiple Custom Code entries containing this code.
- Before adding the code, check whether this SAT Insider code or form ID already exists on the page.
- If it already exists, do NOT add another copy.
- Do not modify the form ID.
- Do not recreate the form.
- Do not rewrite the code.
- Do not manually insert another CTA inside the article.
- Do not add a CTA at the end of the article.
- Do not translate, rewrite, shorten, expand, or otherwise modify the article while installing the code.
- The code automatically finds the article and injects the SAT Insider signup form approximately 35% through the article.
- Once the page-level code is installed, no additional CTA is needed.
- The GHL form handles the email capture and CRM submission.
- After installing the page-level code, stop making structural changes to the article unless specifically required for factual or formatting corrections.

Use this exact page-level Custom Code:

<style>
  #ez-sat-inline-form {
    width: 100%;
    max-width: 820px;
    margin: 42px auto;
  }

  #ez-sat-inline-form iframe {
    display: block;
    width: 100%;
    height: 380px;
    border: 0;
    border-radius: 0;
  }

  @media (max-width: 600px) {
    #ez-sat-inline-form {
      margin: 30px auto;
    }

    #ez-sat-inline-form iframe {
      height: 430px;
    }
  }
</style>

<script>
(function () {

  function findArticle() {
    const candidates = Array.from(document.querySelectorAll(
      'article, main, .blog-post-content, .blog-content, .post-content, .article-content, [class*="blog"][class*="content"], [class*="post"][class*="content"]'
    ));

    let best = null;
    let mostParagraphs = 0;

    candidates.forEach(function(el) {
      const count = el.querySelectorAll('p').length;

      if (count > mostParagraphs) {
        mostParagraphs = count;
        best = el;
      }
    });

    return best;
  }

  function installForm() {

    const oldCTA = document.getElementById('ez-sat-blog-cta');

    if (oldCTA) {
      oldCTA.remove();
    }

    if (document.getElementById('ez-sat-inline-form')) {
      return;
    }

    const article = findArticle();

    if (!article) return;

    const paragraphs = Array.from(
      article.querySelectorAll('p')
    ).filter(function(p) {
      return p.innerText.trim().length > 40;
    });

    if (paragraphs.length < 3) return;

    const position = Math.max(
      2,
      Math.min(
        paragraphs.length - 1,
        Math.floor(paragraphs.length * 0.35)
      )
    );

    const target = paragraphs[position];

    const wrapper = document.createElement('div');

    wrapper.id = 'ez-sat-inline-form';

    wrapper.innerHTML = `
      <iframe
        src="https://api.leadconnectorhq.com/widget/form/McSnNcCWI4GaJ551ymhh"
        id="inline-McSnNcCWI4GaJ551ymhh"
        data-layout='{"id":"INLINE"}'
        data-trigger-type="alwaysShow"
        data-trigger-value=""
        data-activation-type="alwaysActivated"
        data-activation-value=""
        data-deactivation-type="neverDeactivate"
        data-deactivation-value=""
        data-form-name="Blog"
        data-height="380"
        data-layout-iframe-id="inline-McSnNcCWI4GaJ551ymhh"
        data-form-id="McSnNcCWI4GaJ551ymhh"
        data-cookie-consent="true"
        data-cookie-consent-provider="auto"
        title="SAT Insider Updates">
      </iframe>
    `;

    target.insertAdjacentElement(
      'afterend',
      wrapper
    );

    if (!document.querySelector(
      'script[src*="form_embed.js"]'
    )) {

      const script = document.createElement('script');

      script.src =
        'https://link.msgsndr.com/js/form_embed.js';

      script.async = true;

      document.body.appendChild(script);
    }
  }

  if (document.readyState === 'loading') {

    document.addEventListener(
      'DOMContentLoaded',
      function() {
        setTimeout(installForm, 500);
      }
    );

  } else {

    setTimeout(installForm, 500);

  }

})();
</script>

## COVER IMAGE

Create a professional landscape cover-image recommendation, ideally approximately 1200 × 630 pixels.

It should be:
- Relevant
- Uncluttered
- Consistent with E-Z Tutoring’s white and light-blue branding

Do not place important information inside the image.

Alt text must accurately describe the visible image and must not contain keyword stuffing.

## OUTPUT FORMAT

Return the work in this order:

### PART 1: SEO PUBLISHING DETAILS

Keep this section concise.

Include:

- Search intent
- Target audience
- Primary keyword
- Secondary keywords
- Suggested category
- Suggested tags
- H1 title
- SEO title
- URL slug
- Meta description
- Blog-card excerpt
- Recommended author
- Suggested author bio
- Last-reviewed date
- Email capture CTA: SAT Insider Updates
- CTA placement: Automatically injected approximately 35% through the article

### PART 2: COVER IMAGE PACKAGE

Keep this section concise.

Include:

- Cover-image concept
- Recommended filename
- Alt text
- Caption
- Complete image-generation prompt

### PART 3: COMPLETE BLOG ARTICLE

Write the complete article ready to publish in GoHighLevel.

**Target length: 900–1,400 words.**

Use:
- Proper H2 and H3 structure
- Short paragraphs
- Authoritative links
- Key Takeaways
- 3–5 FAQs

Do NOT place:
- A final CTA
- A cohort CTA
- A diagnostic CTA
- A tutoring CTA
- A newsletter CTA
- A manually created email signup CTA

The SAT Insider form will be injected automatically through the page-level Custom Code.

Do not repeat the same advice in:
- Introduction
- Body
- Key Takeaways
- FAQ

### PART 4: INTERNAL-LINKING RECOMMENDATIONS

Recommend only 2–4 links.

For each, provide:

- Suggested destination
- Anchor text
- Placement

Use placeholders instead of inventing URLs.

### PART 5: SOURCES AND FACT-CHECK

Keep this section brief.

List only sources actually used for meaningful factual claims.

For each source, provide:

- Organization
- Page title
- URL
- Claim supported

Identify anything requiring human verification.

## FINAL QUALITY CHECK

Before finishing, confirm that:

- The article is approximately 900–1,400 words.
- It satisfies the primary search intent without unnecessary tangents.
- It opens with a direct answer.
- Facts are accurate and current.
- It provides specific, useful advice rather than generic filler.
- Keywords are used naturally.
- No information was fabricated.
- Sections do not unnecessarily repeat each other.
- No manual CTA was added inside the article.
- No bottom-of-article CTA was added.
- No diagnostic CTA was added.
- No cohort CTA was added.
- The SAT Insider page-level Custom Code was installed exactly once.
- The SAT Insider form ID remains McSnNcCWI4GaJ551ymhh.
- No duplicate Custom Code entry was created.
- The article itself was not rewritten or translated while installing the Custom Code.

Do not increase the article length simply for SEO.

Concise, genuinely useful coverage is preferred over a long article.
4 Stage 4: Review the Article

Before continuing, quickly review the finished article:

Quick Review Checklist
•
Make sure the writing is clear, accurate, and easy to read.
•
Make sure the article includes relevant external links.
•
Make sure the article contains at least one relevant image.
•
Make sure the SAT Insider signup form appears once approximately 35% through the live article, and confirm there is no manual CTA at the bottom.
5 Stage 5: Complete the Settings and Publish

Blog settings and publishing screen

1
After reviewing the article, click “Continue” in the top-right corner.
2
Under “Publish or Schedule,” change the selection from “Draft” to “Publish.”
3
Enter today’s date as the published date.
4
Leave the URL slug exactly as GHL generated it.
5
Under “Category,” select “SAT Prep & Updates.”
6
Under “Author,” select your own name.
7
Leave the canonical link exactly as GHL generated it.
8
Leave the automatically generated keywords in place.
9
On the right side, leave the title, post description, alt text, and other SEO information as generated.
10
Take a screenshot of the settings page showing the article title, cover-image alt text, and post description.
11
Upload that screenshot to ChatGPT and ask:
“Create a professional 600 × 400 landscape cover image for this E-Z Tutoring blog post. Base the image on the blog title, cover-image alt text, and post description shown in this screenshot. Use a clean, professional, trustworthy style with white and light-blue colors. Do not include any words, letters, logos, banners, or watermarks in the image.”
12
Download the image ChatGPT creates and upload it into the “Cover image” field.
13
Confirm that the cover-image alt text is still filled in.
14
Click “Publish.”
7 Index the Blog on Google
2
At the top of the page, click the field labeled “Inspect Any URL.”
3
Paste the complete live blog URL.
4
Press Enter on the keyboard.
5
Wait for Google to finish checking the URL.
6
Click “Request Indexing.”
7
Wait until Google confirms that the indexing request was submitted.

Requesting indexing does not guarantee immediate indexing. Do not repeatedly submit the same URL.

8 Add the Blog to the Facebook Group
1
Log in to Alexander’s Facebook account.
2
Click “Groups” on the left.
3
Under “Groups You Manage,” open the correct E-Z Tutoring Facebook group.
4
Click “Write Something.”
5
Copy and paste only the reader-facing blog article. Do not copy the SAT Insider signup form, Custom Code, SEO publishing details, or internal AI instructions.
6
Remove any copied website metadata, including: alexanderioncescu, 2 minutes ago, 4 min read.
7
Make sure the formatting is readable inside Facebook.
8
Add the original live blog URL at the bottom of the Facebook post.
9
Preview the post.
10
Click “Post.”
Warning

Do not copy the SEO publishing details, image-generation instructions, source log, internal notes, or AI prompts into Facebook. Only post the reader-facing article.

✓ FINAL COMPLETION CHECKLIST
Completion Checklist (check off as you go)

2. New Private Student

Important rule (read first)

This SOP applies only when the student is completely new and does not already exist in our system. If the student already has a profile in the system, do not complete this onboarding process again.

Stage 1: Send the onboarding form
1
Open the Conversations tab for the parent.
2
Click inside the message box.
3
Click the Snippets button at the bottom.
4
Select the snippet called “New Onboarding.”
5
Send the message to the parent.
Onboarding link

The “New Onboarding” snippet directs the family to onboarding.e-ztutoring.com.

What to look for: Confirm the correct snippet is selected (“New Onboarding”) and that the message points the family to the onboarding form link. Tip: Click the image to open a larger preview.

Stage 2: Wait for onboarding completion

Once the family completes the onboarding form, the system will automatically handle most of the onboarding process.

The administrative assistant will receive a notification when the onboarding form has been completed. Wait for this notification before moving to the final steps.

Stage 3: Complete the five remaining tasks

3. New Cohort Student

Before you start (required)

This SOP is only for a student who already exists in the system. Before beginning, confirm all three requirements below. If any requirement is not met, stop and resolve the missing profile(s) or contact link before continuing:

1
The student already has an existing contact profile.
2
The parent already has an existing contact profile.
3
The student and parent profiles are properly linked.
Stage 1: Send the correct payment link

For cohort enrollments, never create or send an invoice. The assistant must use a payment link.

Select the correct payment link based on how far away the next SAT is, and send that link directly to the parent.

Reminder

Cohort payments must always be collected through the correct payment link. Do not use invoices.

What to do here: Locate the payment links and select the correct link based on how far away the next SAT is. Tip: Click the image to open a larger preview.

Stage 2: Confirm payment

Wait until the payment has been successfully completed before enrolling the student.

Do not manually enroll a student based only on a promise to pay or because the payment link was sent. Verify that payment was received first.

Stage 3: Manually enroll the student

Once payment has been confirmed, go to:

cohorts.e-ztutoring.com/manual-enroll

The assistant will need to enter the system password, which she should already have securely saved. Do not display or store the system password anywhere on the public SOP page.

Complete the manual-enrollment form using the correct student, parent, payment, and cohort information.

What to do here: Use the manual-enrollment page to enroll the student after payment is confirmed. Tip: Click the image to open a larger preview.

Stage 4: Let the system complete the enrollment

After the manual-enrollment form is successfully submitted, the system will automatically:

•
Create the student’s cohort portal
•
Create the required cohort appointments
•
Send the applicable notifications
•
Complete the remaining automated enrollment steps

The assistant should not manually recreate anything already handled by the system.

Final Checklist

4. Creating a New Cohort

Purpose

Set up a new SAT cohort with the correct tutor, class schedule, GHL cohort calendar, recurring Zoom room, Outlook events, and Fathom recording/report automation.

Tools needed
Cohort CreatorGoHighLevelZoomOutlookFathomZapierPDFMonkey

1Confirm the cohort details

1
Confirm with Alexander the subject, target SAT date, first and final class dates, class days, start time, duration, tutor, capacity, curriculum/homework sequence, and enrollment opening date. Use the approved price and offer for this cohort.
2
Use America/New_York (Eastern Time) consistently. Check every class date, including any daylight-saving change. Build the schedule around the approved SAT date; do not copy an old cohort’s dates.
3
Keep a setup note with the cohort name/ID, tutor name and email, GHL user and calendar IDs, Zoom meeting ID/link, first/last class dates, and Zap name. Keep passwords and webhook secrets in their secure location.

2Create or verify the tutor’s GHL cohort calendar

1
In GoHighLevel → Settings → Calendars, locate the tutor’s existing cohort calendar. Reuse it if it is already correctly configured. If the tutor needs one, duplicate a working cohort calendar and rename it clearly for that tutor.
2
Assign the correct tutor/GHL user. Review the copied duration, timezone, availability, meeting location, and connected calendar settings against this cohort’s schedule. Make sure the tutor can see the appointments.
3
Copy the Calendar ID and retain the tutor’s GHL user ID for the cohort/tutor configuration. Remove any copied assignment or meeting link belonging to another tutor. Check for overlapping classes.

3Create the Zoom room and import it into Outlook

1
Create one scheduled recurring Zoom meeting per cohort, with its own meeting ID. Use a clear title identifying the subject, SAT date, class days/time, and tutor. Set the exact days, start time, duration, timezone, and recurrence end date from Stage 1.
2
Use the established working cohort’s Zoom settings as the template and ensure the assigned tutor can host/start the meeting. Save the Zoom join URL and meeting ID. Keep the same room across that cohort’s classes.
3
Export/download the meeting’s .ics calendar file from Zoom. In the tutor’s Outlook web calendar, open Add calendar → Upload from file → Browse, select the .ics file, choose the tutor’s primary calendar connected to Fathom, and import.
4
Inspect the imported series. Confirm every scheduled class is present through the final class, with the correct title, dates, Eastern Time, and Zoom link. If the export did not include the full series, complete the recurrence in Outlook. Avoid duplicate imports.
5
Confirm Fathom is connected to that tutor’s calendar and Zoom account. Check that the scheduled cohort title appears in Fathom before class. Follow the working cohort event setup, including its attendee details; a Zoom link alone does not establish a scheduled calendar event.

4Add the tutor and create the cohort

1
Open cohorts.e-ztutoring.com/create and sign in using the securely saved admin password. Keep credentials out of this SOP.
2
Add or verify the tutor in the creator’s tutor configuration. Match the tutor’s name, email, GHL user/calendar mapping, and Fathom account email. Reuse an existing correct tutor record.
3
Complete the cohort configuration with the correct program/subject, SAT date, start/end dates, class days/time, duration, timezone, assigned tutor, capacity, and Zoom URL. For SAT Math, the established program ID is sat-math-intensive. Use the configured program for the selected subject.
4
Review the enrollment settings and save/create the cohort once. Record the returned Cohort ID. Verify that the generated session count, dates, times, tutor, and curriculum/homework match the approved plan.
5
Confirm the Zoom URL is saved on the cohort and that no individual session has an old join-link override. The portal uses a session-specific link when present, otherwise the cohort’s Zoom URL.
6
Check the cohort/tutor calendar mapping and meeting location so automated appointments use the correct GHL calendar and Zoom room. Confirm the cohort is available for the intended enrollment window. If payment/offer links must change, use Alexander’s approved cohort price and offer.

5Set up the tutor’s Fathom recording and report Zap

1
In Zapier, locate the working cohort recording/report Zap. For a new tutor, duplicate that Zap, name it clearly, and connect the tutor’s Fathom account. If that tutor already has a working cohort Zap covering the new cohort, verify its coverage rather than creating duplicate processing.
2
Keep the established sequence: Fathom recording → existing tutor AI assistant → PDFMonkey report → Webhooks by Zapier. Retain the working filters and field mappings, updating tutor/account references and any cohort-specific filters for the new cohort.
3
In the final Webhooks by Zapier POST action, use Payload Type: Json and Add Line Items: False. Send to:
https://ez-parent-portal-api.plain-bird-fbec.workers.dev/recording-sync
4
Map the five fields in the table below from the actual Fathom and PDFMonkey outputs. Preserve the scheduled start time as a valid timestamp; it must correspond to a generated cohort session.
5
Add the header X-EZ-Sync-Secret using the securely stored value matching the Worker’s ENROLLMENT_SYNC_SECRET. Keep the value out of SOP text and screenshots.
6
Retest PDFMonkey first to obtain a fresh, non-empty Download URL, then test the final webhook against a recording from a scheduled session of this cohort. PDFMonkey’s Download URL expires after one hour; the Worker copies the PDF to private R2 and saves the lasting report URL.
7
Confirm the test returns success: true and the correct session. For the R2 report flow, check session.reportUrl and session.reportStoredInR2: true. Publish/turn on the Zap after verifying its result.
Cohort recording webhook field mappings
JSON keyMap from
recording_share_urlFathom Recording Share URL
meeting_scheduled_start_timeFathom Meeting Scheduled Start Time
fathom_user_emailFathom User Email
meeting_titleFathom Meeting Title
pdf_download_urlPDFMonkey Download URL

Use the cohort /recording-sync action. Do not copy the private-session /session-ingest action or its student_email, tutor_email, or meeting_url fields. Cohort recordings and reports belong to the class session and are shared with entitled students.

6Verify the complete setup

1
Review the new cohort in the cohort management view and confirm its tutor, calendar mapping, session schedule, capacity, Zoom room, and enrollment settings.
2
Check the tutor’s Outlook calendar and Fathom schedule side by side. They must identify the same cohort and class times. Confirm the tutor can start the scheduled Zoom room.
3
After the recording/report test, open the cohort portal at cohorts.e-ztutoring.com/portal using an existing entitled student/test account. In Past Sessions, confirm the matching class has working Watch Recording and View Report buttons.
4
Verify the existing class reminder automation covers the new cohort: 24 hours, 1 hour, and 10 minutes before class, plus the configured homework reminders. Check that its messages use the correct cohort and join information.
5
For 401 in the Zap, check the sync-secret header. For 404 No matching cohort session found, check scheduled start time, Fathom user email, and meeting title against the saved cohort session. For an expired PDF URL, rerun PDFMonkey before the webhook. Escalate Worker/R2 configuration errors to Alexander.
6
Share the completed setup details with Alexander through the usual internal handoff: cohort ID, tutor, class dates/time, GHL calendar ID, Zoom link, and active Zap name.
Final Checklist