Documentation

Bot Command Reference

Everything you can do with your WagBot site from Discord — updated as features are added.

Last updated: June 3, 2026

Send plain-language messages to the WagBot bot in Discord to manage your site. The sections below cover every supported operation.

1. Site-Wide Settings

Update any of the following fields by describing what you want in plain language.

Identity

  • business_name — The name of the business/site, displayed in the navigation bar, the footer, and in the browser tab title. Also accepts 'site name.'
    Examples
    • "Change the business name to Main Street Carwash"
    • "Change the site name to Turtle Blog"
  • logo_path — Set by uploading an image (see Section 6: Image Uploads). We recommend a .png with a transparent background.
    Example
    • [attach image] "Set this as my logo"
  • favicon_path — The small icon shown in browser tabs next to the page title. Must be an .ico file. Set by uploading a .ico file (see Section 6: Image Uploads)
    Example
    • [attach .ico file] "Use this as my favicon"

Colors

Colors are stored as hex values in the format #rrggbb. You can provide any common color name (such as "red" or "navy blue") and the bot will convert it to the appropriate hex value automatically.

  • primary_color — Main brand color; used for the nav bar, footer, and hero block background by default.
    Example
    • "Change the primary color to navy blue"
    • "Change the primary color to #800080"
  • secondary_color — Supporting brand color; used for buttons
    Example
    • "Set the secondary color to gold"
  • accent_color — Highlight color; used on links, post prices, and tag backgrounds
    Example
    • "Set the accent color to #f4a261"
  • text_color — Default color for all body text on the site
    Example
    • "Change the text color to dark gray"
  • bg_color — Background color for all pages
    Example
    • "Set the background color to off-white"

Typography

  • font_choice — The typeface used across the entire site:
    • intermodern, clean sans-serif
    • merriweathertraditional serif, suited to reading-heavy content
    • robotoneutral, versatile sans-serif
    • playfairelegant high-contrast serif, suited to premium or editorial looks
    • systemthe visitor's device default font; no web font is loaded
    Examples
    • "Change the font to Merriweather"
    • "Switch to Playfair Display"
    • "Use the system font"

Navigation

  • nav_style — controls how the nav bar behaves while scrolling:
    • top-fixed — always visible at the top of the screen, even when scrolling
    • top-sticky — scrolls away, then reappears when the user scrolls back up
    • top-static — stays at the top of the page and scrolls away as the user scrolls down
    • sidebar-left — a vertical panel fixed to the left side of the page
    • sidebar-right — a vertical panel fixed to the right side of the page
    Examples
    • "Make the nav fixed to the top"
    • "Switch to a left sidebar navigation"
    • "Use a static top nav"
  • nav_layout — controls where the logo and nav links appear within the nav bar:
    • logo-left — logo on the left, nav links on the right
    • logo-center — logo centered, nav links split to either side
    • logo-right — logo on the right, nav links on the left
    • links-center — nav links centered across the full width of the nav bar
    Examples
    • "Center the logo in the nav"
    • "Move the logo to the right"
    • "Center the nav links"
  • nav_mobile — controls how navigation is presented on small screens:
    • hamburger — nav links are hidden on small screens; a hamburger icon (≡) appears and opens a dropdown when tapped
    • always-hamburger — hamburger icon shown on all screen sizes, not only mobile
    • overlay — tapping the menu icon opens a full-screen overlay displaying the nav links
    Examples
    • "Use a hamburger menu on mobile"
    • "Switch to overlay menu for mobile"
  • nav_color_source — controls which brand color is used as the nav bar background. The nav link and text color is calculated automatically for readable contrast and cannot be set separately.
    • primary — use the primary_color setting as the nav bar background
    • secondary — use the secondary_color setting as the nav bar background
    Examples
    • "Use the primary color for the nav background"
    • "Set the nav background to the secondary color"

Contact Info

  • contact_phone — business phone number, displayed in the contact sections
    Example
    • "Set the phone number to (555) 123-4567"
  • contact_email — business contact email address
    Example
    • "Update the contact email to hello@mybusiness.com"
  • contact_address — business mailing or street address
    Example
    • "Change the address to 123 Main St, Springfield, IL 62701"

Hours

  • business_hours — hours per day of the week, or "Closed". Say it in plain language and the bot converts it to the correct format. When you mention only specific days, only those days are updated — all others keep their current values.
    Examples
    • "Set our hours to Monday through Friday 9am to 5pm, Saturday 10am to 3pm, closed Sunday"
    • "We're open every day 8am to 8pm"
    • "Change Saturday hours to 11am-4pm" (preserves all other days)

Social Links

Shown in the footer. Three platforms are supported: Instagram, Facebook, and YouTube. You can add, update, or remove a single platform without affecting the other two.

  • social_links — set a full URL to display a platform's link; leave blank to hide it
    Examples
    • "Set my Instagram to https://instagram.com/mybusiness"
    • "Add our Facebook page: https://facebook.com/mybusiness"
    • "Remove the YouTube link from the footer"
  • footer_social_style — how social links are displayed in the footer:
    • text — plain text links showing the platform name
    • icons — each platform's brand icon as a small circular button
    Examples
    • "Show social links as icons in the footer"
    • "Switch footer social links back to text"
2. Page Blocks — Content

Each page has numbered slots. Each slot holds one block. Update any non-fixed block by naming the page, slot, and field.

The Home page has 4 block slots. The About page has 3 block slots. The Contact page has 2 slots, with the contact block fixed in slot 2. The posttype pages have 2 slots, with the post list block fixed in slot 2.

The blocks and their fields are listed below.

Hero

  • headline — the main heading text displayed prominently in the block
    Example
    • "Change the home hero headline to 'Fresh Baked Every Morning'"
  • subtext — supporting text displayed below the heading
    Example
    • "Set the home hero subtext to 'Order online for same-day pickup'"
  • bg_image — background image for the block. Set by uploading an image (see Section 6) or by providing an external image URL.
    Example
    • [attach image] "Use this as the home hero background"
  • bg_color — block background color (hex or color name). Defaults to the primary color.
    Example
    • "Set the home hero background color to #1a1a2e"
  • cta_label — call-to-action button text. Clear this field to hide the button entirely.
    Examples
    • "Change the home hero button to 'Shop Now'"
    • "Remove the button from the home hero"
  • cta_url — the destination when the button is clicked. Can be an external URL or an internal page link (see Section 11).
    Example
    • "Link the home hero button to the contact page"
  • text_color — overrides the default text color for this block only (hex or color name)
    Example
    • "Set the home hero text color to white"

Text Block

  • headline — section heading displayed above the body text
    Example
    • "Change the about page slot 2 headline to 'Our Story'"
  • body — the main paragraph text. To make a targeted edit or append text, describe the change in plain language — the bot applies only the exact change you describe. To replace the entire body, provide the full replacement text.
    Examples
    • "Update the body text in about slot 2 to 'We've been serving the community since 2005.'"
    • "Append 'Hours may vary on holidays.' to the text in about slot 2"
    • "Change 'We opened in 2005' to 'We opened in 2003' in the about page text block"
  • align — text alignment: left | center | right
    Example
    • "Set the text block on the about page to center alignment"
  • bg_color — block background color (hex or color name)
    Example
    • "Change the text block background on about slot 3 to light gray"

Text + CTA

  • headline — main heading text
    Example
    • "Change the home slot 3 headline to 'Ready to get started?'"
  • subtext — supporting text displayed below the headline
    Example
    • "Update the subtext in home slot 3 to 'No contracts. Cancel any time.'"
  • cta_label — button text. Clear this field to hide the button.
    Examples
    • "Change the CTA button to 'Book a Consult'"
    • "Remove the button from home slot 3"
  • cta_url — button destination URL or internal page link (see Section 11)
    Example
    • "Link the home slot 3 button to the contact page"
  • align — alignment of block content: left | center | right (default: center)
    Example
    • "Set the text CTA on the home page to left alignment"
  • bg_color — block background color (hex or color name)
    Example
    • "Change the home slot 3 background to light gray"

Image Carousel

  • images — managed via upload and removal operations (see Section 8: Carousel Images)
  • captions — caption text for each image, matched by position
    Example
    • "Set the home carousel captions: first image 'Our storefront', second image 'Inside the shop'"
  • interval — how long each slide is shown before advancing, in milliseconds. 1 second = 1000.
    Example
    • "Set the home carousel to change slides every 5 seconds"
  • show_dots — show navigation dots below the carousel (0 or 1)
    Example
    • "Turn off the dots on the about page carousel"

Single Image

  • image — the image to display. Set by uploading an image (see Section 6) or by providing an external image URL.
    Example
    • [attach image] "Use this for the single image on the about page"
  • caption — text displayed below the image
    Example
    • "Add the caption 'Our team at the 2024 fair' to the about page image"
  • link_url — if set, clicking the image navigates to this URL. Can be an external URL or internal page link (see Section 11). Clear this field to remove the link.
    Example
    • "Make the about page image a link to the contact page"
  • width — how wide the image is displayed on the page:
    • full — spans the full width of the page, edge to edge
    • large — wide with a small margin on each side
    • medium — centered at roughly half the page width
    • small — narrow, centered
    Example
    • "Set the image width on about slot 3 to large"

Latest Post

Displays the most recent post of a given type.

  • post_type — which post type to display. Use the page name as it appears in your navigation (e.g. "Cars" or "Blog"), not the internal name "posttype1".
    Example
    • "Change the latest post block to pull from the Cars post type"
  • headline — section heading displayed above the post preview
    Example
    • "Set the latest post headline to 'Recently Added'"
  • show_image — show the post's featured image (0 or 1)
    Example
    • "Show the featured image on the latest post block"
  • show_excerpt — show an excerpt from the post body (0 or 1)
    Example
    • "Show the excerpt on the latest post block"
  • cta_label — text on the link that leads to the full post
    Example
    • "Change the read more link to 'View Listing'"

Post Grid

Displays a grid of recent posts.

  • post_type — which post type to display. Use the page name as it appears in your navigation (e.g. "Cars" or "Blog"). Set to all to pull from all enabled post types — one most-recent post per enabled type, up to 3 total.
    Example
    • "Set the home page grid to show all post types"
  • headline — section heading displayed above the grid
    Example
    • "Set the post grid headline to 'Latest Listings'"
  • count — how many posts to display
    Example
    • "Change the post grid to show 6 posts"
  • show_image — show the featured image for each post (0 or 1)
    Example
    • "Show featured images on the home page post grid"
  • show_date — show the publication date for each post (0 or 1)
    Example
    • "Show dates on the home page post grid"
  • show_excerpt — show an excerpt from each post's body (0 or 1)
    Example
    • "Turn off the excerpt in the post grid"

YouTube Embed

  • video_url — full URL of the YouTube video to embed
    Example
    • "Set the video on the about page to https://youtube.com/watch?v=abc123"
  • headline — optional heading displayed above the video. Clear this field to show no heading.
    Example
    • "Add the heading 'See Us in Action' to the about page video"
  • caption — optional text displayed below the video. Clear this field to show no caption.
    Example
    • "Add the caption 'Watch our full tour' to the about page video"
  • autoplay — play the video automatically when the page loads (0 or 1)
    Example
    • "Turn off autoplay on the home page video"

Social Links Block

A page section displaying your social links, separate from the site-wide footer social links.

  • headline — a section heading stored with this block; not currently displayed on the site
    Example
    • "Set the social links block headline to 'Find Us Online'"
  • style — how the platform links are displayed:
    • buttons — a pill-shaped bordered button per platform with the platform name as text
    • icons — a filled circular button per platform showing the platform's brand icon
    Examples
    • "Change the social links block on the about page to icons style"
    • "Switch the home page social links to buttons"

Business Info

The phone number and email address shown by this block come from the site-wide contact_phone and contact_email settings (see Section 1). They cannot be overridden at the block level.

  • headline — a section heading stored with this block; not currently displayed on the site
    Example
    • "Set the business info block headline to 'Visit Us'"
  • show_hours — show the business hours (0 or 1)
    Example
    • "Show the hours in the contact page business info block"
  • show_address — show the business address (0 or 1)
    Example
    • "Hide the address from the business info block on the contact page"
  • show_map — show an embedded map (0 or 1)
    Example
    • "Show the map in the business info block"
  • map_query — the search query used to locate the business on the embedded map. Clear this field to remove the query.
    Example
    • "Set the map query to 'Sunrise Bakery Portland OR'"

Testimonials

Individual testimonials are managed via add and remove operations — see Section 7: Testimonials.

  • headline — a section heading stored with this block; not currently displayed on the site
    Example
    • "Set the testimonials block headline to 'What Our Customers Say'"
  • interval — how long each testimonial is shown before rotating to the next, in milliseconds. 1 second = 1000.
    Examples
    • "Set the testimonials to rotate every 4 seconds"
    • "Change the testimonial rotation speed to 6 seconds"

Contact Form

Permanently in contact page slot 2. Cannot be swapped to another slot and cannot be hidden. The form always collects the visitor's email address. The name and message fields are optional and can be individually shown or hidden.

  • headline — the heading displayed above the contact form
    Example
    • "Change the contact form heading to 'Get in Touch'"
  • button_label — the text on the form's submit button
    Example
    • "Change the contact form button to 'Send Message'"
  • show_name — show the Name input field on the form (0 or 1)
    Example
    • "Hide the name field on the contact form"
  • show_message — show the Message textarea on the form (0 or 1)
    Example
    • "Hide the message field on the contact form"
  • success_message — the message shown to the visitor after a successful submission
    Example
    • "Set the contact form success message to 'Thanks! We'll be in touch within 24 hours.'"

Fixed Blocks

The following blocks are permanently assigned to specific slots. They cannot be swapped to a different slot and cannot be hidden.

  • contact_form — contact page slot 2 (see Contact Form above for configurable fields)
  • post_list — slot 2 on each post-type page; controls how the list of posts is displayed
    • layout: list (default) — stacked layout: thumbnail on the left, title/date/excerpt on the right
    • layout: card — grid layout: featured image fills the top of each card, with title/date/excerpt/price below
    Examples
    • "Switch the cars listings to card layout"
    • "Change the blog post list to card layout"
    • "Switch back to list view on the cars page"
3. Page Blocks — Structure

Swap a Block Type

Replace any non-fixed block with a different block type. All current content in that slot is wiped. Requires confirmation before executing.

Available types: hero, text_block, text_cta, image_carousel, single_image, latest_post, post_grid, youtube_embed, social_links, business_info, testimonials

The contact_form and post_list types are fixed to their specific slots and cannot be swapped to other slots.

Examples
  • "Replace home slot 3 with a testimonials block"
  • "Swap about slot 2 for an image carousel"
  • "Change home slot 4 to a YouTube embed"

Show / Hide a Block

Toggle visibility of any non-fixed block. Hidden blocks remain in the database but are not rendered on your site.

Examples
  • "Hide the about page slot 3"
  • "Show home slot 4"
  • "Turn off the text block on the about page"

Block Limits Per Page

  • Home — 4 slots
  • About — 3 slots
  • Contact — 2 slots (slot 2 is the fixed contact form)
  • Post-type pages — 2 slots (slot 2 is the fixed post list)
4. Posts

Your site has up to three post-type pages (for example, "Cars", "Blog", "Listings"). When talking to the bot, refer to the post type by its name as it appears in your navigation — not by "posttype1", "posttype2", or "posttype3".

Each post is assigned a numeric ID when it is created. The bot reports the ID in its response. The ID also appears in the post's URL on your site (for example, a Cars post with ID 42 would appear at /cars/42).

Create a Post

  • Required: post type, title
  • Optional: body, price, tags (comma-separated), featured image (via attachment), gallery images (via attachment)

If you attach images when creating a post, say "use as featured image" to designate one as the featured image — all other attachments go to the gallery. Attach images to the same message as the creation request.

Examples
  • "New cars post: 2019 Toyota Camry, $18,500, tags: used, sedan, toyota"
  • "Create a blog post titled 'Summer Menu Launch' with body 'We're excited to announce our new summer menu starting June 1.'"
  • [attach image] "New cars post: 2020 Honda Civic, $15,000. Use this as the featured image."
  • [attach images] "Create a cars post for a 2021 Subaru Outback, $24,000, add these to the gallery"

Edit Post Body

Provide the post ID and a plain-English description of the change. This is for targeted edits to existing content only — fix a typo, replace a specific word or phrase, or append a sentence you provide. The bot applies only the exact change you describe and does not add or generate additional text.

Examples
  • "In cars post 3, change 'good condition' to 'excellent condition'"
  • "Fix the typo in blog post 7 — it says 'automtic', should be 'automatic'"
  • "Add 'One previous owner.' to the end of cars post 5"

Update Post Fields

  • title — replaces the post title; also generates a new URL slug
    Example
    • "Rename cars post 12 to '2018 Ford F-150 XLT'"
  • price — sets or updates the price field
    Example
    • "Update the price on cars post 3 to $17,200"
  • tags — you can replace the entire tag list, append one or more tags, or remove specific tags
    Examples
    • "Set the tags on cars post 2 to sports, coupe, manual" (replaces all tags)
    • "Add the tag 'low mileage' to cars post 5"
    • "Remove the tag 'sold' from cars post 8"

Delete a Post

Permanently and irreversibly deletes the post and all associated data. Requires confirmation before executing (see Section 10).

Example
  • "Delete cars post 4"

Post Images

  • Set featured image — sets the featured image for a post. Replaces any existing featured image.
    Example
    • [attach image] "Set this as the featured image for cars post 3"
  • Add to gallery — appends one or more images to the end of the post's existing gallery
    Example
    • [attach images] "Add these photos to cars post 7"
  • Replace all gallery images — removes all existing gallery images and replaces them with the newly uploaded images
    Example
    • [attach images] "Replace the gallery on cars post 5 with these"
  • Remove all gallery images — clears the entire gallery. Does not affect the featured image.
    Example
    • "Remove all the images from cars post 2"
  • Remove featured image — removes the featured image only. Does not affect the gallery.
    Example
    • "Remove the featured image from cars post 6"
5. Post-Type Page Settings

Each post-type page has settings that control how it appears in the navigation and how its posts are laid out. These apply to the page as a whole, not to individual posts.

  • nav_label — the name shown in the navigation bar for this page. Changing this name also changes the page's URL slug (e.g. renaming to "Cars" makes the URL /cars). This is also the name used when referring to this post type in all other bot commands.
    Examples
    • "Rename posttype1 to Cars"
    • "Change the posttype2 page name to Blog"
  • enabled — whether this post-type page is shown in the navigation and accessible on the site (1 to show, 0 to hide)
    Examples
    • "Hide the posttype3 page from the nav"
    • "Enable the blog post type"
  • post_layout — the layout used to display posts on this page:
    • editorial — article-style layout with text emphasis
    • media_lead — layout where the featured image leads
    • sidebar — layout with a sidebar panel
    • card — grid of cards, one per post
    Examples
    • "Change the cars page layout to card"
    • "Switch the blog to editorial layout"
    • "Set posttype2 to sidebar layout"
6. Image Uploads

Upload images by attaching them to your Discord message. Specify where the image should go.

Accepted formats: JPEG, PNG, GIF, WebP. Favicons must be .ico format. Maximum file size: 10 MB per image.

  • Logo — [attach image] "Set this as my logo"
  • Favicon — [attach .ico file] "Use this as my favicon"
  • Block image — [attach image]
    • "Set this as the home hero background"
    • "Use this for the single image on the about page"
  • Post featured image — [attach image] "Set this as the featured image for cars post #5"
  • Post gallery add — [attach images] "Add these images to cars post #5"
  • Post gallery replace — [attach images] "Replace the images on cars post #5 with these"
  • Carousel add — [attach images]
    • "Add this to the home page carousel"
    • "Add these three images to the about carousel"
  • Carousel replace — [attach image] "Replace the second image in the home carousel with this"
7. Testimonials

Add a Testimonial

Provide the quote text. Author name and role/title are optional. The testimonial is appended to the existing list.

Examples
  • "Add a testimonial: 'Absolutely love this place, best coffee in town!' — Sarah M., Portland"
  • "New testimonial from John D., loyal customer: 'Five stars, I recommend them to everyone I know.'"
  • "Add this quote to testimonials: 'Changed my life.' — Alex R."

Remove a Testimonial

Remove by author name (case-insensitive). Use "remove all testimonials" to clear the entire list.

Examples
  • "Remove the testimonial from Sarah M."
  • "Delete John D.'s testimonial"
  • "Remove all testimonials"
8. Carousel Images
  • Add images — attach images and target a carousel by page name
  • Replace one image — target by position (first, second, third…). Send exactly one image attachment.
  • Remove one image — target by position, no attachment needed.
Examples
  • [attach images] "Add these to the home page carousel"
  • [attach image] "Replace the first image in the home carousel with this"
  • [attach image] "Swap out the third photo in the about carousel"
  • "Remove the second image from the home carousel"
  • "Delete the first photo from the about page carousel"
9. Information Queries

Ask About Your Site

Ask the bot anything about your current site state and it will answer from your live data.

Examples
  • "What blocks are on the about page?"
  • "What font am I using?"
  • "Which block types are available?"
  • "Is the posttype2 page enabled?"
  • "What's my current primary color?"
  • "What layout options are there for posts?"

Contact Form Submissions

Returns the 25 most recent messages submitted through your site's contact form. Each submission shows the date, the sender's name, email address, and message. Submissions that have not been retrieved before are marked as new; they are marked as read after being retrieved.

Example
  • "Show me my contact form submissions"

Delete Contact Submissions

Permanently deletes contact form submissions. You can delete one submission by its ID, multiple submissions by providing multiple IDs, or all submissions at once. The ID numbers are shown in the submissions list. All delete operations require confirmation before executing (see Section 10).

Examples
  • "Delete contact submission #3"
  • "Delete contact submissions #2 and #5"
  • "Delete all contact submissions"

Batch Operations

Multiple changes in a single message are processed together. Note that destructive operations that require confirmation (such as swap block type) cannot be combined with other confirmation-required operations in the same message.

Example
  • "Change the primary color to navy, the font to Merriweather, and the nav to top-fixed"
10. Confirmation Flow

The following operations require confirmation before they execute:

  • Swap block type — destroys the existing block's content
  • Delete post — permanently deletes the post and its images
  • Delete contact submission(s) — permanently deletes one or more contact submissions

The bot will describe exactly what it is about to do and ask you to confirm. Reply "yes" to proceed, or "cancel" to abort. If you do not respond within 60 seconds, the operation is cancelled automatically and nothing is changed.

You "Replace home slot 3 with a testimonials block"
Bot "This will replace the existing text block in home slot 3 and all its content will be lost. Reply 'yes' to confirm."
You "yes"
11. Internal Page Links

When setting a CTA or link URL to an internal page, say the page name and the bot will resolve the correct internal reference. If you rename a post type later, internal links that use this format stay correct automatically.

Available pages: home, about, contact, and your three post-type pages.

Examples
  • "Set the home hero button to link to the contact page"
  • "Make the about page CTA link to the Cars page"
  • "Set the single image link to the blog page"