# Kleis — Complete Documentation > Kleis connects Planning Center Publishing and Calendar content to native WordPress content and blocks for church websites. This file contains the full public documentation from https://getkleis.com/docs/. Each section includes its canonical source URL. For a concise site map, see https://getkleis.com/llms.txt. ## Current product facts Source: https://getkleis.com/product/ Kleis costs $15 USD per month or $150 USD per year for one active WordPress site. Annual billing saves $30 compared with twelve monthly payments. Kleis requires WordPress 6.0 or newer, PHP 8.0 or newer, an active subscription, and a Planning Center account that can authorize Publishing, Calendar, or both. It is tested through WordPress 7.0. Planning Center Publishing episodes synchronize into native WordPress Episode posts. Planning Center Calendar events are requested as needed and displayed with blocks; they are not imported as WordPress event posts. Planning Center OAuth tokens are encrypted with AES-GCM outside WordPress. API proxying is limited to supported Publishing and Calendar read paths. Kleis does not replace Church Center, include a separate staging activation, guarantee every page builder integration, or support every Planning Center product. Ongoing sync, Calendar, connection, update, and support services require an active subscription. Commercial pages: https://getkleis.com/sermons/, https://getkleis.com/events/, https://getkleis.com/pricing/, https://getkleis.com/compare/, and https://getkleis.com/use-cases/. --- ## Kleis Documentation Source: https://getkleis.com/docs/ Description: Install Kleis, connect Planning Center, and publish sermons and events in WordPress. Last updated: 2026-06-17 ### One connection, two kinds of content ##### Sermons Kleis imports Planning Center Publishing episodes as native WordPress content. Episodes, artwork, audio, resources, channels, series, and speakers can participate in WordPress templates and Query Loops. ##### Events Kleis reads current Planning Center Calendar data when your pages load. Calendar and Events Template blocks let you present that live data without copying events into WordPress. ### Product and purchasing ##### Product facts Review [pricing, requirements, supported products, security, and limitations](https://getkleis.com/product/) before installing. ##### Pricing Compare the [$15 monthly and $150 annual one-site plans](https://getkleis.com/pricing/). ##### Compare approaches Compare Kleis with [manual entry, embeds, and custom API development](https://getkleis.com/compare/). ##### Use cases Explore workflows for [church teams, designers, ministry staff, and developers](https://getkleis.com/use-cases/). ### Setup checklist 1. [Check the requirements](https://getkleis.com/docs/start/before-you-begin/). 2. [Install the Kleis plugin](https://getkleis.com/docs/start/install/). 3. [Activate your license](https://getkleis.com/docs/start/activate-license/). 4. [Connect Planning Center](https://getkleis.com/docs/start/connect-planning-center/). 5. [Run your first sermon sync](https://getkleis.com/docs/start/first-sync/). 6. [Enable automatic sermon updates](https://getkleis.com/docs/start/webhooks/). 7. [Publish your first Kleis page](https://getkleis.com/docs/start/first-page/). ##### Events only? Complete installation, license activation, and the Planning Center connection. A sermon sync and Publishing webhooks are only needed when you publish sermons. ### Get help Start with [sync and connection help](https://getkleis.com/docs/troubleshooting/sync-and-connection/) or [event help](https://getkleis.com/docs/troubleshooting/events/). If the documented checks do not solve the problem, [contact Kleis support](https://getkleis.com/support) and include the exact error message you see. --- ## Event Block Reference Source: https://getkleis.com/docs/events/block-reference/ Description: Controls, context, and output for every Kleis event block. Last updated: 2026-06-18 Except for the standalone Calendar, event detail blocks must be placed inside **Kleis Events Template**. The editor limits insertion to supported core layout blocks and Kleis event blocks. ### Planning Center Calendar Displays up to 100 upcoming event instances in interactive month and list views. Controls: event color, toolbar button color, and toolbar button text color. ### Kleis Events Template Repeats its inner layout for 1–24 event days. When **Featured events only** is enabled, consecutive occurrences of the same Planning Center event are combined into one card and the limit counts featured cards instead of days. Controls: number to display, include past events, featured only, include tags, and exclude tags. Supports wide and full alignment. ### Kleis Event Image Displays the primary event image. Controls: link to event, CSS width, aspect ratio, and Cover/Contain/Fill scaling. Shows a placeholder in the editor when no image is available and produces no image on the public page. ### Kleis Event Title Displays the primary event title as a link to its Church Center event URL when available. It has no custom settings; use standard block and theme styles. ### Kleis Event Time Displays the time text prepared for the event's day, including appropriate multi-day and all-day handling. ### Kleis Event Registration URL Displays a **Sign up** link when the primary event has a Planning Center registration URL. Produces no link when registration is unavailable. ### Kleis Event Day Schedule Lists the title and time for every event grouped on the current day. Use it instead of separate Title and Time blocks for busy dates. ### Date blocks - **Kleis Event Weekday:** weekday name for the current event day - **Kleis Event Day:** numeric day of the month; date ranges include an `is-range` class for custom styling - **Kleis Event Month Year:** month and year These blocks use the WordPress site's timezone. Configure that timezone under **Settings > General**. On grouped featured cards, the date blocks display ranges such as `22–26`, `June 2026`, and `Monday–Friday`. ### Supported layout blocks Inside Events Template you can use Group, Columns, Column, Stack, Paragraph, Heading, Separator, and Spacer blocks. Other dynamic blocks are intentionally restricted because they do not receive Kleis event context. You should now be able to: choose the correct event block, place it in the required context, find its available controls, and predict what happens when source data is missing. --- ## Add a Planning Center Calendar Source: https://getkleis.com/docs/events/calendar/ Description: Display current Planning Center events in an interactive WordPress calendar. Last updated: 2026-07-20 The Planning Center Calendar block displays upcoming Calendar events in month and list views. Event data is requested through WordPress and refreshed frequently; it is not imported as WordPress posts. Kleis uses each event's published start and end times. Private setup and takedown time remains hidden from the public calendar. ### Prerequisites Kleis must show **Connected to Planning Center**, and the connected organization must have at least one current or upcoming Calendar event. ### Add the calendar 1. Edit the page where the calendar should appear. 2. Insert the **Planning Center Calendar** block. 3. In the block sidebar, open **Colors**. 4. Choose the **Event color**, **Toolbar button color**, and **Toolbar button text color**. 5. Preview the page and test the previous, next, today, month, and list controls. 6. Select an event and confirm it opens the expected Church Center event page. 7. Publish or update the page. ### Choose accessible colors Use a toolbar text color with strong contrast against the toolbar button color. Test event labels at desktop and mobile widths. Theme colors appear in the picker when the active theme provides a palette. ### What visitors see - **Month** shows events on their calendar dates. - **List** provides a compact chronological view. - **Previous**, **Next**, and **Today** change the visible date range. - Event links use the public URL supplied by Planning Center. ##### Freshness Kleis briefly caches Calendar responses and refreshes them in the background so Planning Center response times do not delay your pages. Immediately after connecting Planning Center or when the cache must be rebuilt, visitors may briefly see a loading message. If the background refresh takes too long, Kleis automatically retries once while preparing the page. A Planning Center change may take several minutes to appear. You should now see: an interactive public calendar containing current Planning Center events, readable toolbar controls, and event links that open the correct destination. For a designed chronological layout, [build an upcoming events list](https://getkleis.com/docs/events/events-list/). --- ## Design Event Cards Source: https://getkleis.com/docs/events/event-cards/ Description: Compose a responsive Events Template layout with images, dates, details, and registration links. Last updated: 2026-06-17 Design one event-day layout inside **Kleis Events Template**. WordPress repeats it with real Planning Center data. ### A practical card layout 1. Select the Events Template and open its inner blocks in List View. 2. Add a **Group** and apply your theme's card background, border, padding, and spacing. 3. Add **Kleis Event Image** near the top or in the first column. 4. Add a date row containing **Event Weekday**, **Event Day**, and **Event Month Year**. 5. Add **Event Title** and **Event Time**. 6. Add **Event Registration URL** when your events use registration. 7. Use a Stack for narrow screens or Columns that collapse cleanly on mobile. ### Configure Event Image Select the image and open **Image Settings**: - **Link image to event** makes the image open the public event URL. - **Width** accepts a valid CSS width such as `320px`, `24rem`, or `100%`. - **Aspect ratio** offers original, square, landscape, wide, and portrait options. - **Scale** controls how the image fills a chosen ratio: Cover crops, Contain preserves the whole image, and Fill may distort it. Use **Cover** for consistent cards and **Contain** when artwork must never be cropped. ### Editor preview The editor requests a real matching event so the child blocks can preview title, time, image, date, and registration details. The public page remains the authoritative result because theme CSS and live event data apply there. ##### Preview filtered layouts Set tag and featured filters before judging the preview. The sample event follows the current Events Template filters. ### Responsive check Preview at desktop, tablet, and mobile widths. Confirm that the longest title wraps, the image does not stretch, and the registration link remains easy to select. You should now see: a consistent repeated event design using real preview data, with readable text, intentional image cropping, and a clean mobile layout. Next: [Handle Multi-Event Days](https://getkleis.com/docs/events/multi-event-days/). --- ## Build an Upcoming Events List Source: https://getkleis.com/docs/events/events-list/ Description: Repeat a custom block layout for upcoming Planning Center event days. Last updated: 2026-06-21 The **Kleis Events Template** block repeats its inner blocks for upcoming event days. Use it when you want a list or grid that follows your theme rather than a month calendar. Event data is served from a local cache and refreshed in the background so Planning Center response times do not delay the page. Immediately after connecting Planning Center or when the cache must be rebuilt, the block may briefly show a loading message; refresh the page shortly to display the events. Event cards use the published start and end times from Planning Center, so private setup and takedown time is not shown. ### Add the template 1. Edit a page and insert **Kleis Events Template**. 2. Select the outer template block using List View. 3. In **Event Settings**, choose the **Number of days** from 1 to 24. 4. Leave **Include past events** off for a normal upcoming-events page. 5. Turn on **Featured events only** only when Planning Center marks the desired events as featured. 6. Add include or exclude tags when needed. Type the exact tag name and press Enter after each tag. The limit counts event **days**, not individual event instances. Several events on one date can share a single repeated day. ### Build the repeated layout The starter layout contains a Group with Event Title and Event Time. Select the inner Group and arrange supported blocks inside it. Common additions include Event Image, Event Weekday, Event Day, Event Month Year, and Event Registration URL. Use core Group, Columns, Stack, Heading, Paragraph, Separator, and Spacer blocks to structure the layout. Kleis repeats everything inside the Events Template for each returned event day. ### Filter behavior - **Include tags:** An event must match an included Planning Center tag. - **Exclude tags:** Matching events are removed. - **Featured only:** Only events marked featured in Planning Center appear. - Combining filters narrows the results further. Tag matching ignores capitalization, but the documentation recommends copying the visible Planning Center tag name to avoid mistakes. You should now see: one repeated layout for each upcoming event day, ordered soonest first and limited by your selected days and filters. Next: [Design Event Cards](https://getkleis.com/docs/events/event-cards/). --- ## Handle Multi-Event Days Source: https://getkleis.com/docs/events/multi-event-days/ Description: Choose the right Kleis blocks for multiple events, recurring events, and multi-day schedules. Last updated: 2026-06-18 Events Template groups its results by the site's local calendar day. This keeps a busy schedule from repeating the same date heading for every event. ### Choose a display pattern #### One primary event per day Use **Event Title** and **Event Time** when each day usually has one event or when a simple preview is sufficient. Other child blocks, including Event Image and Registration URL, use the primary event for that day. #### Every event on the day Use **Kleis Event Day Schedule** when several events may share a date. It renders each event title and display time in chronological order within the repeated day layout. A useful structure is: 1. Date heading with Event Weekday, Event Day, and Event Month Year 2. Event Day Schedule beneath the heading 3. Separator after the day's group ### Multi-day events Kleis expands a multi-day event across each day it occupies so it can appear in the correct date group. The displayed time text reflects the relevant portion of the event for that day. When **Featured events only** is enabled, Kleis instead combines occurrences from the same Planning Center event when they fall on the same or consecutive dates. The featured card displays one image, title, registration link, date range, and compact schedule for the complete run. Nonconsecutive occurrences, such as weekly services, remain separate cards. Matching daily schedules are summarized as a daily time range. If times differ, Kleis groups adjacent weekdays that share the same schedule. A single event that continuously spans several dates is shown with its starting and ending weekday and time. ### All-day events All-day events do not require an artificial clock time. Preview the page to make sure your surrounding labels still read naturally when the Event Time block has all-day output. ### Repeated instances Planning Center may provide separate instances for recurring events. Kleis sorts instances by their start time and groups only those that fall on the same local date. ##### Registration links Event Registration URL uses the primary event in the day group. If each event in a busy day needs its own registration link, use linked event titles from Event Day Schedule or separate filtered Events Template sections. You should now see: one date heading per day and, when using Event Day Schedule, every event on that day listed in chronological order without duplicate date headings. Next: [Event Block Reference](https://getkleis.com/docs/events/block-reference/). --- ## Frequently Asked Questions Source: https://getkleis.com/docs/faq/ Description: Answers about Church Center, synchronized data, editing, themes, licenses, staging, and support. Last updated: 2026-06-17 ### Does Kleis replace Church Center? No. Kleis helps your WordPress site present Planning Center content. Church Center continues to serve its app and congregation workflows, and Kleis can link visitors back to Church Center. ### Where is content stored? Sermon episodes are synchronized into your WordPress database as native Episode posts, terms, metadata, and media-library artwork. Calendar events are requested from Planning Center as needed and are not imported as WordPress event posts. ### Can I edit synchronized episodes in WordPress? You can, but a later sync may replace fields managed by Planning Center. Edit sermon information in Planning Center and use WordPress templates, blocks, and theme styles for presentation. ### How quickly do changes appear? Publishing episode changes normally arrive through configured webhooks and process in the background. A full manual sync provides a safe refresh. Calendar data is cached briefly, so allow roughly half a minute before refreshing after an event change. ### Which themes work with Kleis? Kleis uses standard WordPress posts and blocks and can work with modern block themes and classic themes. Block themes provide the most direct way to design Episode templates. Classic themes or third-party builders may need their own post-type template configuration. ### Can I use a page builder? Builders that support custom post types, dynamic post fields, and native WordPress blocks may work, but Kleis cannot guarantee every builder integration. Test Episode templates, Query Loops, and dynamic Kleis blocks before committing to a layout. ### Does one license include staging? No separate staging activation is currently included. One subscription activates one WordPress site at a time. You can deactivate and move the license while testing. ### What happens if I cancel? Existing imported Episode posts generally remain. Connection services, Calendar data, new syncs, updates, downloads, license validation, and subscriber support may stop after paid access ends. ### Why is a Kleis block blank? Dynamic sermon blocks need an Episode context and their corresponding Planning Center data. Event detail blocks need to be inside Events Template. Some blocks intentionally produce no output when an optional resource, image, registration URL, or Church Center link is missing. ### When should I contact support? Contact support after following the relevant [sync and connection](https://getkleis.com/docs/troubleshooting/sync-and-connection/) or [event troubleshooting](https://getkleis.com/docs/troubleshooting/events/) guide. Include: - site URL - WordPress and Kleis versions - active theme name - exact error message - last successful sync time - steps already attempted Do not include your license key, webhook secret, password, or private Planning Center data. [Contact Kleis support](https://getkleis.com/support). --- ## Updates, Subscription, and License Management Source: https://getkleis.com/docs/maintain/updates-and-subscription/ Description: Keep Kleis current, manage billing, and move or deactivate a site license. Last updated: 2026-06-17 ### Install plugin updates An active subscription gives WordPress access to Kleis update metadata and private update packages. 1. Back up the WordPress database and files. 2. Go to **Dashboard > Updates** or **Plugins > Installed Plugins**. 3. Review the Kleis version and update notice. 4. Select **Update now**. 5. After the update, open a sermon page and an events page to confirm normal output. You may enable WordPress automatic updates for Kleis from the plugin list. Keep a reliable automated backup when using automatic updates. ### Manage the subscription 1. Go to **Settings > Kleis for Planning Center**. 2. Under **Subscription**, select **Manage Subscription**. 3. Sign in to the customer portal using the purchasing email address. 4. Manage the payment method, invoices, renewal, or cancellation there. ### Move a license 1. On the currently active site, go to **Settings > Kleis for Planning Center**. 2. Select **Deactivate License**. 3. Install Kleis on the destination site. 4. Save the same license key on the destination site. 5. [Connect Planning Center](https://getkleis.com/docs/start/connect-planning-center/) and verify the new site. Deactivation removes the old site's connection credentials from the Kleis service. Synchronized Episode posts already stored in the old WordPress site generally remain until you delete them. ### After cancellation or expiration Previously imported sermon posts remain in WordPress, but new sermon syncs, connection services, private downloads, plugin updates, license validation, Calendar access, and subscriber support may stop. Renew before troubleshooting an inactive-license message. ##### Do not delete before transferring Deactivate the license before deleting an old site or plugin. If the old site is already unavailable, [contact support](https://getkleis.com/support) for help releasing the activation. You should now be able to: update Kleis through WordPress, reach the subscription portal, and move the one-site activation without losing imported content. --- ## Build a Sermon Archive Source: https://getkleis.com/docs/sermons/archive/ Description: Display synchronized Episode posts in a WordPress Query Loop with artwork, details, and pagination. Last updated: 2026-06-17 A **Query Loop** is a WordPress block that displays a changing list of posts. Use it for a sermon page that automatically includes newly synchronized episodes. ### Prerequisites Complete the [first sync](https://getkleis.com/docs/start/first-sync/) and confirm Episode posts exist. ### Create the archive page 1. Go to **Pages > Add New** and enter a page title such as “Sermons.” 2. Insert the **Query Loop** block. 3. Choose a starting pattern, then select the outer Query Loop block in List View. 4. Turn off **Inherit query from template** if that option appears. 5. In the Query Loop settings, set **Post type** to **Episode**. 6. Set ordering to **Newest to oldest**. 7. Set how many episodes appear per page. ### Design one result Inside **Post Template**, arrange the blocks that should repeat for every episode: - **Post Featured Image**, linked to the post - **Post Title**, linked to the post - **Post Date** - **Post Excerpt** - **Post Terms** for Channel, Series, or Speaker Use a Group, Columns, or Grid layout from your theme to organize these blocks. Keep the entire repeated item inside **Post Template**. ### Add pagination After **Post Template**, keep or insert **Pagination** with Previous, Page Numbers, and Next blocks. Preview page 2 when you have enough episodes to confirm the query remains filtered to Episodes. ##### Filter a focused list In Query Loop filters, choose a Channel, Series, or Speaker term to create a focused sermon list. Leave the main Sermons page unfiltered when it should show every episode. ### Publish and test 1. Preview the page at desktop and mobile widths. 2. Open an episode title and confirm it reaches the correct episode page. 3. Test taxonomy links and pagination. 4. Publish the page and add it to the site navigation. You should now see: a sermon page ordered newest first, with synchronized artwork and details, working episode links, and pagination that remains on Episode content. Next: [Design the Episode Template](https://getkleis.com/docs/sermons/episode-template/). --- ## Sermon Block Reference Source: https://getkleis.com/docs/sermons/block-reference/ Description: Reference for the Kleis Sermon Audio, Episode Resources, and Open in Church Center blocks. Last updated: 2026-06-22 These dynamic blocks read synchronized data from the current Episode. Use them in a single Episode template or while editing an Episode, not on a general page that has no episode context. ### Kleis Sermon Audio **Purpose:** Displays a native HTML audio player. **Source:** Uses the external library audio URL when supplied. For Planning Center-hosted audio, Kleis requests a fresh short-lived file access link when playback begins, including on cached pages. **Editor:** Shows a placeholder because the final player is rendered on the front end. **Empty state:** Displays “Audio not available.” **Styling:** Target the block's standard WordPress wrapper and `.kleis-sermon-audio` in theme CSS when block controls are not sufficient. ### Kleis Episode Resources **Purpose:** Displays valid Planning Center episode resource links with file-type icons. **Source:** Each resource needs both a title and a valid public web URL. **Editor:** Shows a placeholder; resource links appear on the front end. **Empty state:** Produces no output, preventing an empty list from taking up space. **Styling:** The list uses `.kleis-episode-resources`, with item and link classes beneath it. ### Kleis Open in Church Center **Purpose:** Displays an **Open in Church Center** link for the current episode. Its default presentation is designed for mobile visitors. **Source:** Uses the episode's Church Center URL from Planning Center Publishing. **Editor:** Shows a simple preview label. **Empty state:** Produces no output when no Church Center URL is available. **Styling:** Use `.kleis-open-in-app` and `.kleis-open-in-app__button` when your theme needs an override. ##### Optional data changes layout Preview episodes with and without audio, resources, and a Church Center URL. Place surrounding spacing on a parent Group when possible so hidden optional blocks do not leave awkward gaps. You should now be able to: choose the correct sermon block, place it in Episode context, predict its empty state, and identify the stable CSS class available to your theme. --- ## Build Channel and Series Navigation Source: https://getkleis.com/docs/sermons/channels-and-series/ Description: Link visitors to Kleis channel, series, speaker, and episode collections. Last updated: 2026-06-17 Kleis synchronizes channels, series, and speakers as WordPress terms. It also supplies stable public routes for episodes and Planning Center-style channel and series archives. ### Available routes - `/channels/` lists synchronized channels. - A channel URL lists episodes assigned to that channel. - A channel's `/series/` URL lists series belonging to that channel. - A series URL lists its episodes within the parent channel. - An episode URL opens the individual Episode post. The generated links include Planning Center identifiers. Use WordPress-generated links instead of typing IDs by hand. ### Add navigation links 1. Visit the public `/channels/` page while signed in. 2. Open the channel or series you want to feature. 3. Copy its public URL. 4. In **Appearance > Editor > Navigation**, add a custom link with a reader-friendly label. 5. Save and test the link while signed out. Classic themes may provide navigation under **Appearance > Menus** instead. ### Create curated sections Use a Query Loop when you want a designed selection rather than the theme's default taxonomy archive: 1. Add a Query Loop to a page. 2. Choose **Episode** as the post type. 3. Add a taxonomy filter for the required Channel, Series, or Speaker. 4. Design the repeated result and publish the page. ### Archive styling Channel and series archives use the active theme's archive presentation. Speaker terms are available to templates and Query Loops, but their public archive appearance also depends on the theme. If a default archive is too plain, link visitors to a curated Query Loop page. You should now see: navigation links that open the intended channel or series, and any curated Query Loop should contain only episodes from its selected term. Next: [Sermon Block Reference](https://getkleis.com/docs/sermons/block-reference/). --- ## Design the Episode Template Source: https://getkleis.com/docs/sermons/episode-template/ Description: Create the shared block-theme layout for individual sermon episode pages. Last updated: 2026-06-17 The single Episode template controls every imported sermon page. Designing one shared template avoids manual edits that a later sync could overwrite. ### Block themes 1. Go to **Appearance > Editor**. 2. Open **Design > Templates**. The exact labels may vary slightly by WordPress version. 3. Find the template for a single **Episode**. If none exists, add a custom template for the Episode post type. 4. Keep the theme's Header and Footer template parts. 5. Add a main Group block and place the episode blocks inside it. 6. Save the template, then preview a real Episode post. ### Recommended block order 1. **Post Featured Image** 2. **Post Terms** for Series or Channel 3. **Post Title** 4. **Post Date** and **Post Terms** for Speaker 5. **Kleis Sermon Audio** 6. **Post Content** 7. **Kleis Episode Resources** 8. **Kleis Open in Church Center** Use theme spacing, typography, and color controls around these blocks. The Kleis blocks resolve their content from the Episode currently being displayed. ### Empty states - Sermon Audio displays “Audio not available” when the episode has no usable audio. - Episode Resources produces no front-end output when no valid resource links exist. - Open in Church Center produces no output when Planning Center provides no Church Center URL. Check multiple episodes before finalizing spacing because optional blocks may disappear. ### Classic themes If **Appearance > Editor** is unavailable, your classic theme controls single-post templates in PHP or through its own builder. You can still place Kleis blocks in an Episode's block content, but synchronized Post Content may be replaced by a later sync. The durable classic-theme solution is to add the Kleis blocks to the theme's Episode template or a supported builder template. Use a child theme and ask the theme maintainer for help; do not edit a third-party parent theme directly. You should now see: every Episode page using one consistent layout, with audio and optional resources or Church Center links appearing only when the source episode provides them. Next: [Build Channel and Series Navigation](https://getkleis.com/docs/sermons/channels-and-series/). --- ## How Sermon Content Works Source: https://getkleis.com/docs/sermons/how-sermons-work/ Description: Understand the WordPress posts, taxonomies, files, and links created by a Kleis sermon sync. Last updated: 2026-07-14 Kleis turns Planning Center Publishing content into native WordPress content. This makes sermons available to WordPress templates, Query Loops, search, and theme styling instead of placing them inside an embed. ### Episode posts Each Planning Center episode becomes a WordPress post with the **Episode** post type. Episodes published to the Planning Center library are published in WordPress. Unpublished episodes remain WordPress drafts until they are published in Planning Center, so incomplete or accidentally created episodes do not appear on the public website. Kleis also waits to import a newly created episode while Planning Center gives it the temporary **New Episode** title; it imports the episode when a later sync includes its real title. Kleis uses the Planning Center episode ID to update the same post during later syncs and to avoid duplicates. If a published episode is unpublished in Planning Center, its WordPress post returns to draft status. The post can include: - the episode title and description - the Planning Center library publish date - synchronized artwork as the featured image - hosted or external audio information - resource links - an Open in Church Center destination ### Channels, series, and speakers Kleis creates three WordPress taxonomies: - **Channels** organize the broad Publishing destinations. - **Series** group related episodes. - **Speakers** identify one or more speakers attached to an episode. A **taxonomy** is WordPress's way of grouping content. Themes can display these terms, and Query Loops can use them to select episodes. ### What stays in Planning Center Planning Center remains the source of truth for synchronized fields. When a webhook or full sync processes an episode, Kleis can replace manual WordPress changes to its title, description, date, featured image, audio metadata, resources, and taxonomy relationships. Use WordPress to control the presentation: - Build the shared [Episode template](https://getkleis.com/docs/sermons/episode-template/). - Build archive layouts with [Query Loop](https://getkleis.com/docs/sermons/archive/). - Apply theme styles to blocks and templates. Use Planning Center to control the sermon information itself. ### URLs Episode, channel, and series pages use stable Kleis routes based on their Planning Center IDs. Changing a title does not change the identity of the synchronized item. You should now understand: Planning Center owns sermon data, while WordPress owns templates and presentation. A synchronized episode is a native WordPress post, not an embedded remote page. Next: [Build a Sermon Archive](https://getkleis.com/docs/sermons/archive/). --- ## Activate Your License Source: https://getkleis.com/docs/start/activate-license/ Description: Validate your Kleis license and understand the one-site activation limit. Last updated: 2026-06-17 ### Prerequisites Kleis must be [installed and activated](https://getkleis.com/docs/start/install/). Have the license key from your purchase email ready. ### Activate this site 1. In WordPress, go to **Settings > Kleis for Planning Center**. 2. Paste the key into **License Key**. 3. Select **Save Changes**. 4. Wait for the confirmation: **License key validated, activated, and saved.** The key is hidden after saving. Never include it in screenshots, support forum posts, or public messages. ### One active site Each subscription supports one active WordPress site. If the key is already active elsewhere, open the old site's Kleis settings and select **Deactivate License**. You can then save the key on the new site. If the old site is unavailable, [contact support](https://getkleis.com/support) with the purchasing email address and the site URLs. Do not send the license key through an unsecured public channel. ### Common messages - **Invalid license key:** Copy the complete key again and remove any spaces before or after it. - **Inactive, expired, or disabled:** Confirm that the subscription is active. - **Already activated for a different site:** Deactivate the previous site before retrying. - **Could not activate right now:** Confirm WordPress can make outbound HTTPS requests, then retry. You should now see: a Deactivate License button and a Planning Center status that says the license is active but Planning Center is not connected yet. Next: [Connect Planning Center](https://getkleis.com/docs/start/connect-planning-center/). --- ## Before You Begin Source: https://getkleis.com/docs/start/before-you-begin/ Description: Check WordPress, Planning Center, access, and backup requirements before installing Kleis. Last updated: 2026-06-17 Prepare these items before you install Kleis. Doing this first prevents most setup interruptions. ### Requirements - WordPress 6.0 or newer - PHP 8.0 or newer - A WordPress account with permission to install plugins and manage settings - An active Kleis subscription and purchase email - A Planning Center account that can authorize access to the organization you intend to connect - Planning Center Publishing access for sermons, or Calendar access for events ##### WordPress 7.0 Kleis is tested with WordPress through version 7.0. Keep WordPress, your theme, and other plugins updated. ### Back up the site Create a current database and file backup before installing any plugin on a production site. If your host provides a staging site, test the visual layout there first. One Kleis subscription activates one WordPress site at a time. A staging site does not receive a separate activation, so you may need to [deactivate and transfer the license](https://getkleis.com/docs/maintain/updates-and-subscription/#move-a-license) while testing. ### Know which editor you use The block editor is available on modern WordPress sites. A **block theme** also provides **Appearance > Editor**, where you can design the template shared by all episode pages. If your site uses a classic theme, you can still use Kleis blocks in episode content and regular pages. Template-wide changes may require your theme's template controls or help from the person who maintains the theme. ### Decide what to publish - For sermons, make sure at least one episode is published in Planning Center Publishing. - For events, make sure at least one current or upcoming event is visible in Planning Center Calendar. - Confirm that artwork, audio, registration links, tags, and Church Center links are present at the source if you expect them on the website. You should now have: WordPress administrator access, the Kleis purchase email, the correct Planning Center account, a site backup, and at least one item of source content to test. Next: [Install Kleis](https://getkleis.com/docs/start/install/). --- ## Connect Planning Center Source: https://getkleis.com/docs/start/connect-planning-center/ Description: Authorize Kleis to read your organization's Planning Center content. Last updated: 2026-06-18 Kleis uses **OAuth**, a secure authorization process that lets Planning Center grant access without storing your Planning Center password in WordPress. ### Prerequisites Your [Kleis license must be active](https://getkleis.com/docs/start/activate-license/). Sign in to the Planning Center account that has access to the organization you want on this website. ### Connect the organization 1. In WordPress, go to **Settings > Kleis for Planning Center**. 2. Under **Planning Center Connection**, select **Connect to Planning Center**. 3. Review the organization and requested access on Planning Center's authorization screen. 4. If your account belongs to more than one organization, choose the organization for this website. 5. Approve the connection. 6. Return to the Kleis settings page. ![Planning Center authorization screen showing the Publishing and Calendar access requested by Kleis.](https://getkleis.com/screenshots/connect-authorize.webp) ##### Check the organization Connecting the wrong organization can display the wrong sermons or events. Confirm the organization name before approving access. ### Reconnect later Use **Reconnect Planning Center** if an administrator revokes access, the connected account changes, or Kleis reports that the connection needs attention. Reconnecting does not remove episodes already stored in WordPress. You should now see: Status: Connected to Planning Center on the Kleis settings page. Next: sermon sites should [run the first sync](https://getkleis.com/docs/start/first-sync/). Event-only sites can [publish the first page](https://getkleis.com/docs/start/first-page/). --- ## Publish Your First Kleis Page Source: https://getkleis.com/docs/start/first-page/ Description: Choose a first sermon or events page and confirm that connected content appears publicly. Last updated: 2026-06-17 Choose the path that matches the content you want to publish first. ### Option 1: Upcoming events 1. Go to **Pages > Add New**. 2. Name the page “Events.” 3. Open the block inserter and search for **Planning Center Calendar**. 4. Insert the block, preview the page, and confirm current events appear. 5. Publish the page and add it to your site's navigation. For a list instead of a month calendar, follow [Build an Upcoming Events List](https://getkleis.com/docs/events/events-list/). ### Option 2: Sermon archive 1. Confirm the [first sync](https://getkleis.com/docs/start/first-sync/) created Episode posts. 2. Go to **Pages > Add New** and name the page “Sermons.” 3. Insert a WordPress **Query Loop** block. 4. In the block settings, choose **Episode** as the post type and order newest first. 5. Preview, publish, and add the page to your navigation. Continue with [Build a Sermon Archive](https://getkleis.com/docs/sermons/archive/) to add artwork, taxonomy details, and pagination. ##### Use Preview The editor provides a useful preview, but always check the public page. Theme styles and live Planning Center data are applied on the front end. You should now see: a public WordPress page displaying either current Planning Center events or synchronized sermon episodes, with links that open the expected destination. --- ## Run Your First Sync Source: https://getkleis.com/docs/start/first-sync/ Description: Import Planning Center Publishing episodes and verify the synchronized WordPress content. Last updated: 2026-07-15 The full sync imports sermon content from Planning Center Publishing. Events do not use this import; event blocks request current Calendar data when they render. ### Prerequisites Kleis must show **Connected to Planning Center**, and at least one episode should be published in Planning Center Publishing. ### Run the sync 1. Go to **Settings > Kleis for Planning Center**. 2. Find **Manual Sync**. 3. Select **Run Manual Sync**. 4. Keep the browser open until WordPress reports that the sync completed. 5. Note the value beside **Last Full Sync**. 6. Open **Episodes** in WordPress and inspect a recently published episode. ### What the sync imports Kleis creates or updates native Episode posts and synchronizes: - title, description, and Planning Center publish date - episode artwork as the featured image - hosted or external sermon audio details - episode resource links - the Church Center episode URL - channel, series, and speaker terms The source fields are managed by Planning Center. A later sync can replace WordPress edits to synchronized episode fields. Build the shared presentation in WordPress templates rather than manually redesigning each imported episode. If you merge duplicate people in Planning Center, Kleis keeps their existing WordPress speaker archive and sermon links connected to the primary person on the next sync. ### If content is missing Confirm the episode is published to the Planning Center library and that the connected account can access Publishing. Then rerun the sync. See [sync and connection help](https://getkleis.com/docs/troubleshooting/sync-and-connection/) for individual missing fields. You should now see: Episode posts in WordPress with the expected title, description, date, artwork, channel, series, and speaker information. Last Full Sync should show the current time. Next: [Enable automatic sermon updates](https://getkleis.com/docs/start/webhooks/). --- ## Install Kleis Source: https://getkleis.com/docs/start/install/ Description: Download the Kleis ZIP file and install the plugin in WordPress. Last updated: 2026-06-18 ### Prerequisites You need the Kleis purchase email and a WordPress administrator account. Do not unzip the plugin file before uploading it. ### Install the plugin 1. Open the purchase email and use its download link to save the latest Kleis ZIP file. 2. Sign in to WordPress. 3. Go to **Plugins > Add Plugin**. 4. Select **Upload Plugin**. 5. Choose the Kleis ZIP file, then select **Install Now**. ![WordPress plugin upload form with the Kleis ZIP selected and the Install Now button ready.](https://getkleis.com/screenshots/install-upload.webp) 6. When installation finishes, select **Activate Plugin**. 7. Go to **Settings > Kleis for Planning Center**. After activation, Kleis appears in the installed plugins list: ![Kleis for Planning Center shown as active in the WordPress plugins list.](https://getkleis.com/screenshots/install-active.webp) ##### Keep the ZIP private The download is provided with your subscription. Do not publish or share the private download link or your license key. While your subscription is active, future Kleis updates are delivered through WordPress's standard plugin update system. ### If WordPress rejects the ZIP - **The package could not be installed:** Download the file again and confirm you selected the original ZIP, not a folder or a ZIP created by your computer. - **File exceeds the upload limit:** Ask your host to increase the WordPress upload limit or upload the plugin through the host's approved file-management process. - **Destination folder already exists:** Go to **Plugins > Installed Plugins** and look for Kleis. Update or remove the incomplete older copy before trying again; take a backup first. - **You cannot see Add Plugin:** Your account or managed host does not permit plugin installation. Ask a site administrator to install it. You should now see: “Kleis for Planning Center” in the installed plugin list and a Kleis settings page under Settings. Next: [Activate your license](https://getkleis.com/docs/start/activate-license/). --- ## Enable Automatic Sermon Updates Source: https://getkleis.com/docs/start/webhooks/ Description: Configure Planning Center Publishing webhooks so episode changes reach WordPress automatically. Last updated: 2026-06-18 A **webhook** is a secure notification sent when content changes. Kleis uses episode webhooks to queue a background refresh instead of requiring a manual full sync after every edit. ### Prerequisites Complete the [first sync](https://getkleis.com/docs/start/first-sync/) and make sure WordPress is publicly reachable over HTTPS. You need permission to manage Planning Center webhooks. ### Copy the endpoint 1. Go to **Settings > Kleis for Planning Center**. 2. Find **Webhook URL**. 3. Select the field to highlight the complete URL, then copy it. 4. Keep this URL private. It includes a secret that authenticates incoming notifications. ![Kleis Webhook URL field showing an example endpoint and placeholder secret.](https://getkleis.com/screenshots/webhook-url.webp) ### Create the Planning Center webhook 1. Open the **Planning Center Webhooks** area linked from the Kleis settings page. 2. Create a webhook subscription for Planning Center Publishing episode changes. 3. Paste the complete Kleis **Webhook URL** as the destination. 4. Subscribe to episode create, update, and delete events available in the Publishing webhook interface. 5. Save and enable the webhook. 6. Use Planning Center's test-delivery feature when available, or make a harmless change to a test episode. Kleis validates the secret, queues the episode, and refetches the canonical episode data in the background. Delivery and WordPress processing may take a short time. ##### Do not shorten or edit the URL The query value at the end is part of the authentication. A redacted URL is suitable for a screenshot but will not work as the webhook destination. ### Verify an update 1. Change the title of a test episode in Planning Center Publishing. 2. Wait briefly, then refresh the corresponding Episode in WordPress. 3. Confirm the title changed. 4. Restore the original title and confirm that update arrives as well. You should now see: Publishing episode changes reflected in WordPress without running another manual sync. Next: [Publish your first Kleis page](https://getkleis.com/docs/start/first-page/). --- ## Event Troubleshooting Source: https://getkleis.com/docs/troubleshooting/events/ Description: Resolve missing events, incorrect times, empty filters, absent links or images, and theme conflicts. Last updated: 2026-06-18 ### No events appear 1. Confirm **Settings > Kleis for Planning Center** says connected. 2. Confirm an event instance is current or upcoming in the connected Planning Center organization. 3. Check that the event is visible in Church Center when it should be public. 4. Remove Events Template tag and featured filters temporarily. 5. Preview the public page, wait at least 30 seconds after a source change, and refresh. 6. Check the browser console and WordPress Site Health for REST or outbound-request errors. ### Date or time is wrong 1. Go to **Settings > General** in WordPress. 2. Choose the site's named timezone, such as a nearby city, rather than a fixed UTC offset when daylight saving time applies. 3. Confirm the start, end, and all-day settings in Planning Center. 4. Refresh after the brief Calendar cache expires. ![WordPress General Settings with New York selected as the named site timezone.](https://getkleis.com/screenshots/timezone-setting.webp) ### Filters return no results - Remove all filters to prove events can load. - Add include tags one at a time and press Enter after each tag token. - Confirm the tag belongs to the event instance in Planning Center. - Turn off **Featured events only** unless the event is explicitly featured. - Remember that combined filters narrow the result. - Increase **Number of days** when matching events occur farther in the future. ### Registration link or image is missing Registration URL comes from the parent Planning Center event. Confirm registration is configured and public there. Event Image comes from the event instance; add or correct the image in Planning Center. Some child blocks use the primary event when several events share a day. Use **Event Day Schedule** when every event title needs to appear. ### Styling looks wrong 1. Test with the theme's default block styles. 2. Remove custom Additional CSS temporarily. 3. Inspect whether the problem affects the Kleis block, its parent Group, or every similar core block. 4. Check the page at desktop and mobile widths. 5. For the Calendar, choose explicit accessible colors in the block settings. Avoid changing plugin build files; an update will replace them. Put overrides in the active theme or child theme. You should now see: current events under the correct site timezone, expected filter results, and source-provided links and images. Remaining visual problems should be isolated to a specific theme rule or parent block. --- ## Sync and Connection Troubleshooting Source: https://getkleis.com/docs/troubleshooting/sync-and-connection/ Description: Resolve Kleis license, Planning Center connection, sermon sync, webhook, audio, and artwork problems. Last updated: 2026-06-17 Work through the relevant checks in order. Avoid deleting synchronized posts or reinstalling WordPress as a first response. ### License will not activate 1. Copy the complete license key from the purchase email. 2. Confirm the subscription is active. 3. If the key is active on another site, [deactivate that site first](https://getkleis.com/docs/maintain/updates-and-subscription/#move-a-license). 4. Confirm the site can make outbound HTTPS requests. 5. Retry **Save Changes** and record the exact error message. ### Planning Center will not connect 1. Confirm the license is active. 2. Sign out of unrelated Planning Center accounts, then sign in with the intended account. 3. Select **Connect to Planning Center** or **Reconnect Planning Center**. 4. Confirm the correct organization before approving. 5. Check that browser privacy settings did not block the return to WordPress. ### Manual sync fails or imports nothing 1. Confirm the settings page says **Connected to Planning Center**. 2. Confirm at least one episode is published to the Planning Center library. 3. Confirm the connected account can access Publishing. 4. Run **Manual Sync** again and check whether **Last Full Sync** changes. 5. Check WordPress Site Health for loopback, REST API, cron, or outbound request failures. ### Automatic updates do not arrive 1. Confirm the Planning Center webhook is enabled for episode create, update, and delete events. 2. Copy the current **Webhook URL** from Kleis settings and compare the entire private destination in Planning Center. 3. Confirm the public WordPress REST API is not blocked by a firewall, maintenance mode, or security plugin. 4. Send a test delivery or update a test episode. 5. Allow time for the background queue, then refresh WordPress. 6. Run a manual sync as a safe temporary recovery. ### One field is missing - **Audio:** Confirm Publishing supplies library audio or a hosted sermon audio file. - **Artwork:** Confirm the episode has supported image artwork and WordPress can download remote files. - **Resources:** Each Planning Center resource needs a title and valid public URL. - **Church Center link:** Confirm the episode has a Church Center URL. - **Channel, series, or speaker:** Confirm the relationship is assigned in Publishing and rerun the full sync. ### Safe recovery sequence 1. Back up WordPress. 2. Reconnect Planning Center. 3. Run a manual sync. 4. Verify the webhook destination and send a test. 5. Temporarily disable caching or security rules only when you understand their effect, then restore them after testing. 6. [Contact support](https://getkleis.com/support) with the site URL, Kleis version, WordPress version, last successful sync time, exact error, and steps already tried. Never include the license key or webhook secret. You should now see: an active license, a connected Planning Center status, a recent Last Full Sync time, and expected episode fields. If not, the information collected above is ready for support.