Overview
With GitHub integration, you can:- Store your Pageo profile configuration as a JSON file in your GitHub repository
- Version control your profile changes using Git
- Automatically sync updates when you push changes to GitHub
- Manage your profile entirely through code—no UI required
Prerequisites
Before you begin, make sure you have:- A GitHub account
- A GitHub repository (public or private)
- A Pageo account
- Your repository must be named exactly as your GitHub username (e.g., if your username is
johndoe, your repo should bejohndoe/pageo)
Step 1: Create Your Repository
- Go to GitHub and create a new repository
- Name it exactly as your GitHub username (e.g., if your username is
johndoe, name the repopageo) - Make sure the repository is initialized (you can add a README if you want)
- The default branch should be
main
Step 2: Create Your pageo.json File
- In your repository, create a new file called
pageo.jsonin the root directory - Add the following structure to the file:
Important Notes:
- The
emailfield must match your Pageo account email - You don’t need to include
orderoridfields—Pageo generates these automatically socialLinkscan have up to 8 itemsgridLinkscan have up to 4 items- The
layoutsetting can be either"list"or"grid" showContactFormis optional—only include it if you want to show the contact form
- Commit and push the file to your repository’s
mainbranch
Step 3: Link Your GitHub Account
- Log in to your Pageo account
- Go to your admin dashboard
- Click on “Link GitHub” or navigate to GitHub settings
- Enter your GitHub username
- Click “Validate Repository”
- Once validated, click “Link GitHub”
- Verify that your repository exists
- Check that
pageo.jsonis present and valid - Verify that the email in
pageo.jsonmatches your account email - Import your profile configuration
Step 4: Set Up Webhooks (Automatic Syncing)
After linking your GitHub account, you can set up webhooks to automatically sync your profile whenever you push changes to your repository.Step 4.1: Copy the Webhook URL
- In your Pageo admin dashboard, go to GitHub Settings
- Navigate to the “Webhook” tab
- Copy the webhook URL (it will look like:
https://pageo.me/api/github/webhook)
Step 4.2: Configure Webhook in GitHub
- Go to your GitHub repository
- Click on Settings (in the repository, not your account settings)
- In the left sidebar, click Webhooks
- Click Add webhook
- Fill in the webhook details:
- Payload URL: Paste the webhook URL you copied from Pageo
- Content type: Select
application/json - Secret: Leave empty for now (we’ll add this in the next step)
- Which events: Select “Just the push event”
- Make sure Active is checked
- Click Add webhook
Step 4.3: Generate and Save Webhook Secret (Optional but Recommended)
The webhook secret adds an extra layer of security by verifying that webhook requests are actually coming from GitHub.- In Pageo’s webhook settings, click Generate & Copy
- The secret will be automatically copied to your clipboard
- Go back to your GitHub webhook settings
- Click on the webhook you just created
- Scroll down to the Secret field
- Paste the generated secret
- Click Update webhook
- Return to Pageo and click Save Secret
Saving the secret is optional. Webhooks will work without it, but won’t verify
the request signature for security.
How It Works
Once set up, here’s what happens:- You make changes to
pageo.jsonin your GitHub repository - You commit and push the changes to the
mainbranch - GitHub sends a webhook to Pageo when you push
- Pageo verifies the webhook (if you saved a secret)
- Pageo checks if
pageo.jsonwas modified in the push - Pageo fetches the updated
pageo.jsonfrom GitHub - Pageo updates your profile automatically
Manual Sync
If you don’t want to set up webhooks, or if webhooks aren’t working, you can manually sync your profile:- Go to GitHub Settings in your Pageo dashboard
- Click on the “Webhook” tab
- Click Sync from GitHub
pageo.json from your repository and update your profile.
Updating Your Profile
To update your profile:- Edit
pageo.jsonin your GitHub repository - Commit and push the changes
- If webhooks are set up, your profile will update automatically
- If not, use the manual sync button in Pageo
Unlinking GitHub
If you want to stop using GitHub integration:- Go to GitHub Settings in your Pageo dashboard
- Navigate to the “Delink” tab
- Click Delink GitHub
Troubleshooting
”Repository not found” error
- Make sure your repository is named exactly as your GitHub username
- Verify the repository exists and is accessible
- Check that you’ve entered your GitHub username correctly (not your full name or email)
“pageo.json not found” error
- Ensure
pageo.jsonexists in the root of your repository - Check that the file is committed and pushed to the
mainbranch - Verify the filename is exactly
pageo.json(case-sensitive)
“Email mismatch” error
- The
emailfield in yourpageo.jsonmust match your Pageo account email exactly - Update the email in
pageo.jsonto match your account email - Commit and push the changes
Webhook not triggering
- Verify the webhook URL is correct in GitHub
- Check that the webhook is set to trigger on “push” events
- Make sure you’re pushing to the
mainbranch - Ensure
pageo.jsonwas actually modified in the push - Check GitHub’s webhook delivery logs for any errors
Profile not updating
- Try manually syncing from the Pageo dashboard
- Check that your
pageo.jsonis valid JSON - Verify all required fields are present
- Make sure you’re not exceeding limits (8 social links, 4 grid links)
Best Practices
- Version control everything: Use Git commits to track changes to your profile
- Test locally first: Validate your JSON before pushing
- Use branches: Create a branch, test your changes, then merge to
main - Save your webhook secret: It adds security to your webhook integration
- Keep it simple: Only include fields you need—Pageo will handle the rest
JSON Schema Reference
Required Fields
email: Your account email (must match Pageo account)profile.name: Your display nameprofile.role: Your role or titleprofile.bio: Your bio textsocialLinks: Array of social links (max 8)gridLinks: Array of grid links (max 4)settings.layout: Either"list"or"grid"
Optional Fields
profile.image: URL to your profile imageprofile.email: Contact email (different from account email)profile.imageName: Image filenamesocialLinks[].color: Custom color for social iconsocialLinks[].title: Custom title for social linksettings.showContactForm: Boolean to show/hide contact form
Auto-Generated Fields
You don’t need to include these—Pageo generates them automatically:socialLinks[].order: Automatically set based on array positiongridLinks[].id: Automatically set based on array positiongridLinks[].order: Automatically set based on array position
Support
If you encounter issues not covered here:- Check that your
pageo.jsonfollows the correct schema - Verify your repository name matches your GitHub username
- Ensure all required fields are present
- Try manually syncing to see if the issue is with webhooks