# Custom Domains Source: https://docs.pageo.me/custom-domains Connect your own domain to your Pageo profile Connect your own domain to your Pageo profile so your link-in-bio lives at a URL you own (e.g. `links.yourname.com` or `yourname.com`). Pageo handles verification and routing—you add a couple of DNS records and we do the rest. ## Overview With custom domains you can: * Use your own domain or subdomain for your Pageo profile * Keep your brand in the URL (e.g. `links.yourcompany.com`) * Rely on automatic verification—we check every few seconds once you add the records * Remove or change the domain anytime from the admin ## Prerequisites Before you begin, make sure you have: * A Pageo account (free or Pro) * Access to your domain's DNS settings at your registrar or DNS provider (e.g. Cloudflare, Namecheap, GoDaddy, Vercel) * Your domain or subdomain in mind (e.g. `example.com` or `links.example.com`) ## Supported Setups * **Root/apex domain**: `yourdomain.com` → you'll add an **A** record and a **TXT** record. * **Subdomain**: `links.yourdomain.com`, `bio.yourdomain.com`, etc. → you'll add a **CNAME** record and a **TXT** record. ## Step 1: Add Your Domain in Pageo 1. Log in to your Pageo account and open the **admin dashboard**. 2. Open **Custom Domains** (or the domain settings section). 3. Enter your domain (e.g. `links.example.com` or `example.com`). 4. Click **Add Domain**. Pageo will reserve the domain and generate a **verification token** and the **routing record** you'll add in DNS. ## Step 2: Add DNS Records at Your Provider You'll add two records at the place where your domain's DNS is managed (registrar, Cloudflare, Vercel, etc.): 1. **Verification record (TXT)**\ Proves you control the domain. Pageo shows: * **Type**: `TXT` * **Host**: (shown in the modal—e.g. `_pageo-verification` for root, or `_pageo-verification.links` for `links.example.com`) * **Value**: the long token Pageo gives you (copy from the modal) 2. **Routing record (A or CNAME)**\ Sends traffic to Pageo: * **Root domain** (`example.com`): * **Type**: `A` * **Host**: `@` (or leave blank if your provider uses "root") * **Value**: the IP address shown in Pageo (e.g. `216.198.79.1`) * **Subdomain** (e.g. `links.example.com`): * **Type**: `CNAME` * **Host**: the subdomain only (e.g. `links`) * **Value**: `cname.pageo.me` ### Tips * Copy the **Value** from Pageo with the copy button to avoid typos. * If your provider has a TTL setting, default (e.g. 300–3600) is fine. * Some providers use "Name" or "Host" instead of "Host"; use exactly what Pageo shows for that record. ## Step 3: Wait for Verification * Pageo **checks automatically every few seconds** while the Custom Domains modal is open. You don't need to click "Verify" repeatedly. * DNS changes can take **a few minutes to an hour** to propagate. If it's not verified right away, leave the modal open or come back later and open it again. * When verification succeeds, you'll see a success state and your profile will be available on your custom domain. You can also click **Verify Domain** once you've added the records if you want to trigger a check immediately. ## Step 4: Visit Your Profile Once verified: * Open `https://` (or `https://.`) in a browser. * Your Pageo profile will load on your custom URL. * Your default `pageo.me/username` URL continues to work as well. ## Removing or Changing Your Domain * To **remove** the custom domain: open Custom Domains in the admin and use **Remove Domain**. Confirm when prompted. The modal will close after the removal finishes. * To **use a different domain**: remove the current one, then add the new domain and repeat the DNS steps above. Removing the domain only disconnects it from Pageo. It does not delete the DNS records at your provider. You can remove or change those in your DNS dashboard if you no longer want the domain to point to Pageo. ## Troubleshooting ### Verification never succeeds * **Wait longer**: Propagation can take 5–30 minutes (sometimes more). * **Check the records**: Host and value must match exactly what Pageo shows (no extra spaces, correct subdomain for TXT host). * **Root vs subdomain**: For `example.com` use the root/apex instructions; for `links.example.com` use the subdomain (CNAME) instructions. * Try **Verify Domain** manually after waiting a few minutes. ### "Verification failed" or "Domain verification failed" * Confirm the **TXT** record's value is the full token from Pageo and the host matches (e.g. `_pageo-verification` for root). * Confirm the **A** or **CNAME** record points to the correct target (IP or `cname.pageo.me`). * Use a DNS lookup tool (e.g. [DNS checker](https://dnschecker.org)) to see what the rest of the internet sees for your domain. ### Site doesn't load or shows wrong page * Give it a few minutes after verification; SSL and routing can take a short time to activate. * Clear cache or try an incognito window. * Ensure you're visiting `https://` and the exact host you added (e.g. `links.example.com`). ### CNAME for root domain * Some providers don't allow CNAME on the root. Pageo's flow uses an **A** record for root domains; use the A record and IP shown in the admin. If your provider only supports CNAME at root (e.g. CNAME flattening), their docs will describe how that maps to an A target; use the IP Pageo gives you as the target if possible. ## Summary 1. Add your domain in Pageo (admin → Custom Domains). 2. Add the **TXT** (verification) and **A** or **CNAME** (routing) records at your DNS provider. 3. Wait for automatic verification (or use **Verify Domain**); propagation usually takes 5–10 minutes. 4. Visit your custom URL to confirm your profile loads. For more on DNS and your specific provider, check their documentation. For product updates, see the [changelog](https://pageo.me/changelog). # Getting Started Source: https://docs.pageo.me/getting-started Get your Pageo profile up and running in minutes ## Introduction ### What is Pageo? Pageo is the simplest way to share all your links in one place. It's a minimal, fast, and developer-friendly link-in-bio platform that gets out of your way. Instead of wrestling with complex builders or overwhelming dashboards, Pageo gives you a clean interface to share your social links, projects, and anything else—all in under a minute. ### Why Pageo? We built Pageo because we were frustrated with existing link-sharing platforms. They were either: * **Too bloated**: Packed with features we'd never use * **Too slow**: Hours of setup just to share a few links * **Too complicated**: Complex builders that got in the way Pageo is different. We believe the best tools are the ones you barely notice—they just work. ### Core Philosophy Every decision we make is guided by one principle: **less is more, and speed matters**. We strip away everything that doesn't serve the core purpose—helping you share your links instantly. The result? A platform that feels effortless to use and delightful to experience. ## Features ### Multiple Layouts Choose between list and grid views. Customize how your links appear to visitors without the complexity. ### Analytics Track page views, link clicks, and visitor insights. Know what resonates with your audience. ### GitHub Sync Manage your profile via a JSON file in your repository. Version control your identity, sync automatically, and manage everything as code. ### Custom Domains Use your own domain for a professional presence with full ownership. ### Contact Form Built-in contact form with email notifications. No third-party services needed. ### Instant Setup Go live in under a minute. No complicated onboarding or setup wizards—just pure speed. ## Quickstart Get your Pageo profile up and running in three simple steps. ### Step 1: Create Your Account 1. Go to [pageo.me](https://pageo.me) 2. Click **Sign Up** or **Login** 3. Sign up with your email or use GitHub OAuth 4. Verify your email if required ### Step 2: Claim Your Username 1. After signing up, you'll be prompted to choose a username 2. Pick a unique handle (e.g., `johndoe`) 3. Your profile will be available at `pageo.me/johndoe` 4. Usernames are limited to 30 characters and must be unique Your username becomes your profile URL (e.g., `pageo.me/yourusername`). You can change it later from the sidebar by clicking on your @username. ### Step 3: Add Your Links 1. Go to your admin dashboard 2. Add your profile information: * Name * Role/Title * Bio * Profile image (optional) 3. Add social links: * Click "Add Social Link" * Enter the URL (e.g., `https://github.com/username`) * Pageo automatically detects the platform * Add up to 8 social links 4. Add grid links (optional): * Click "Add Grid Link" * Add title, description, image, and URL * Add up to 4 grid links 5. Choose your layout: * **List**: Vertical list of links * **Grid**: Grid of link cards 6. Configure settings: * Enable/disable contact form * Customize your profile appearance ### Step 4: Publish Your Profile 1. Review your profile in the preview 2. Click **Publish** when you're ready 3. Your profile is now live at `pageo.me/yourusername` 4. Share your link everywhere—social media, email signatures, business cards ## Your First Profile ### Basic Profile Setup Your profile consists of: * **Profile Information**: Name, role, bio, and profile image * **Social Links**: Links to your social media profiles (Twitter, GitHub, LinkedIn, etc.) * **Grid Links**: Featured projects, articles, or any links you want to highlight * **Settings**: Layout preference and contact form toggle ### Adding Social Links 1. In your admin dashboard, find the "Social Links" section 2. Click "Add Social Link" 3. Paste your social media URL 4. Pageo automatically: * Detects the platform (GitHub, Twitter, LinkedIn, etc.) * Adds the appropriate icon * Validates the URL 5. Drag to reorder links 6. Click the trash icon to remove a link **Supported Platforms**: GitHub, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, and many more. ### Adding Grid Links Grid links are perfect for showcasing projects, articles, or featured content: 1. Click "Add Grid Link" 2. Fill in: * **Title**: Name of your project/content * **Description**: Brief description * **Image**: URL to an image (or upload) * **URL**: Link to your project/content 3. Choose layout: "grid" or "list" 4. Add up to 4 grid links ### Layout Options **List Layout**: * Clean, vertical list of links * Perfect for simple link sharing * Minimal and fast **Grid Layout**: * Visual grid of link cards * Great for showcasing projects * More visual and engaging You can switch between layouts anytime in your settings. ### Profile Customization #### Profile Image * Upload an image (max 2MB) * Supported formats: JPG, PNG, WebP * Image is automatically optimized * You can crop the image after uploading #### Bio * Write a brief bio about yourself * Supports Markdown formatting * Keep it concise and engaging #### Contact Form * Enable the contact form to let visitors reach out * All messages are sent to your account email * View and manage messages in your admin dashboard ## Managing Your Profile ### Editing Your Profile 1. Go to your admin dashboard 2. Make changes to any section 3. Changes are saved automatically 4. Preview your profile before publishing ### Reordering Links * **Social Links**: Drag and drop to reorder * **Grid Links**: Drag and drop to reorder * Changes are saved automatically ### Analytics View your profile analytics: * **Page Views**: Total visits to your profile * **Link Clicks**: Clicks on individual links * **Visitor Insights**: Geographic and device data Access analytics from your admin dashboard. ### Publishing and Unpublishing * **Publish**: Make your profile publicly accessible * **Unpublish**: Hide your profile (only you can access it) * You can toggle publishing anytime ## Next Steps Now that you have a basic profile set up, explore these advanced features: * **[GitHub Integration](/integrations/github)**: Manage your profile as code with automatic syncing * **Custom Domains**: Connect your own domain (coming soon) * **Advanced Analytics**: Detailed insights into your profile performance ## Tips for Success 1. **Keep it simple**: Don't overwhelm visitors with too many links 2. **Use quality images**: Good images make your profile stand out 3. **Update regularly**: Keep your links and projects current 4. **Test your links**: Make sure all links work before publishing 5. **Optimize your bio**: A clear, engaging bio helps visitors understand who you are ## Getting Help * Check the [GitHub Integration guide](/integrations/github) for code-based management * Visit our [changelog](https://pageo.me/changelog) for latest updates * Contact support if you need assistance ## Common Questions ### How many links can I add? * **Social Links**: Up to 8 * **Grid Links**: Up to 4 ### Can I change my username? Yes! You can change your username anytime. Go to the sidebar in your admin dashboard and click on your @username to update it. ### Is my profile public? Your profile is only public if you click "Publish". Unpublished profiles are only accessible to you. ### Can I use a custom domain? Custom domain support is coming soon. For now, your profile is available at `pageo.me/yourusername`. ### How do I delete my account? Contact support to delete your account and all associated data. # Introduction Source: https://docs.pageo.me/index Welcome to Pageo documentation ## Welcome to Pageo Pageo is the simplest way to share all your links in one place. A minimal, fast, and developer-friendly link-in-bio platform. Follow our quickstart guide to create your profile in minutes. ## Quick Links Create your first Pageo profile and go live in minutes. Manage your profile as code with automatic GitHub syncing. Connect your own domain to your Pageo profile. # GitHub Integration & Webhooks Source: https://docs.pageo.me/integrations/github Sync your Pageo profile directly from your GitHub repository Sync your Pageo profile directly from your GitHub repository. Manage your links, profile information, and settings as code—version controlled, developer-friendly, and automatically synced. ## 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 be `johndoe/pageo`) ## Step 1: Create Your Repository 1. Go to [GitHub](https://github.com) and create a new repository 2. Name it exactly as your GitHub username (e.g., if your username is `johndoe`, name the repo `pageo`) 3. Make sure the repository is initialized (you can add a README if you want) 4. The default branch should be `main` ## Step 2: Create Your `pageo.json` File 1. In your repository, create a new file called `pageo.json` in the root directory 2. Add the following structure to the file: ```json theme={null} { "email": "your-email@example.com", "profile": { "name": "Your Name", "role": "Your Role", "bio": "Your bio here", "image": "https://example.com/your-image.jpg", "email": "your-email@example.com" }, "socialLinks": [ { "type": "github", "href": "https://github.com/username" }, { "type": "x", "href": "https://x.com/username" } ], "gridLinks": [ { "title": "My Project", "description": "A brief description", "image": "https://example.com/project-image.jpg", "url": "https://example.com/project", "layout": "grid" } ], "settings": { "layout": "list", "showContactForm": true } } ``` ### Important Notes: * The `email` field must match your Pageo account email * You don't need to include `order` or `id` fields—Pageo generates these automatically * `socialLinks` can have up to 8 items * `gridLinks` can have up to 4 items * The `layout` setting can be either `"list"` or `"grid"` * `showContactForm` is optional—only include it if you want to show the contact form 3. Commit and push the file to your repository's `main` branch ## Step 3: Link Your GitHub Account 1. Log in to your Pageo account 2. Go to your admin dashboard 3. Click on "Link GitHub" or navigate to GitHub settings 4. Enter your GitHub username 5. Click "Validate Repository" 6. Once validated, click "Link GitHub" Pageo will: * Verify that your repository exists * Check that `pageo.json` is present and valid * Verify that the email in `pageo.json` matches 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 1. In your Pageo admin dashboard, go to GitHub Settings 2. Navigate to the "Webhook" tab 3. Copy the webhook URL (it will look like: `https://pageo.me/api/github/webhook`) ### Step 4.2: Configure Webhook in GitHub 1. Go to your GitHub repository 2. Click on **Settings** (in the repository, not your account settings) 3. In the left sidebar, click **Webhooks** 4. Click **Add webhook** 5. 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" 6. Make sure **Active** is checked 7. 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. 1. In Pageo's webhook settings, click **Generate & Copy** 2. The secret will be automatically copied to your clipboard 3. Go back to your GitHub webhook settings 4. Click on the webhook you just created 5. Scroll down to the **Secret** field 6. Paste the generated secret 7. Click **Update webhook** 8. 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: 1. **You make changes** to `pageo.json` in your GitHub repository 2. **You commit and push** the changes to the `main` branch 3. **GitHub sends a webhook** to Pageo when you push 4. **Pageo verifies** the webhook (if you saved a secret) 5. **Pageo checks** if `pageo.json` was modified in the push 6. **Pageo fetches** the updated `pageo.json` from GitHub 7. **Pageo updates** your profile automatically Your profile will be updated within seconds of pushing to GitHub. ## Manual Sync If you don't want to set up webhooks, or if webhooks aren't working, you can manually sync your profile: 1. Go to GitHub Settings in your Pageo dashboard 2. Click on the "Webhook" tab 3. Click **Sync from GitHub** This will fetch the latest version of `pageo.json` from your repository and update your profile. ## Updating Your Profile To update your profile: 1. Edit `pageo.json` in your GitHub repository 2. Commit and push the changes 3. If webhooks are set up, your profile will update automatically 4. If not, use the manual sync button in Pageo ## Unlinking GitHub If you want to stop using GitHub integration: 1. Go to GitHub Settings in your Pageo dashboard 2. Navigate to the "Delink" tab 3. Click **Delink GitHub** This will disconnect your GitHub repository. Your current profile configuration will remain, but it will no longer sync with GitHub. You'll need to manage your profile through the Pageo dashboard after delinking. ## 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.json` exists in the root of your repository * Check that the file is committed and pushed to the `main` branch * Verify the filename is exactly `pageo.json` (case-sensitive) ### "Email mismatch" error * The `email` field in your `pageo.json` must match your Pageo account email exactly * Update the email in `pageo.json` to 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 `main` branch * Ensure `pageo.json` was 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.json` is valid JSON * Verify all required fields are present * Make sure you're not exceeding limits (8 social links, 4 grid links) ## Best Practices 1. **Version control everything**: Use Git commits to track changes to your profile 2. **Test locally first**: Validate your JSON before pushing 3. **Use branches**: Create a branch, test your changes, then merge to `main` 4. **Save your webhook secret**: It adds security to your webhook integration 5. **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 name * `profile.role`: Your role or title * `profile.bio`: Your bio text * `socialLinks`: 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 image * `profile.email`: Contact email (different from account email) * `profile.imageName`: Image filename * `socialLinks[].color`: Custom color for social icon * `socialLinks[].title`: Custom title for social link * `settings.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 position * `gridLinks[].id`: Automatically set based on array position * `gridLinks[].order`: Automatically set based on array position ## Support If you encounter issues not covered here: 1. Check that your `pageo.json` follows the correct schema 2. Verify your repository name matches your GitHub username 3. Ensure all required fields are present 4. Try manually syncing to see if the issue is with webhooks For additional help, contact support or check the changelog for recent updates.