PCOWidget — All Configuration Options

Live demo using Emmanuel Lutheran Church data  ·  API key 18dc5c27c3e7ee647b3ff31626a10d16

🛠 Build your own script interactively →

Layouts — data-layout

Built

Five layouts are available. Default is table if omitted.

table — Month grid (default)
<script src="https://api.pcowidget.com/v1/calendar-widget.js?key=18dc5c27c3e7ee647b3ff31626a10d16" data-layout="table"></script>

week — 7-day strip
<script src="..." data-layout="week"></script>

list — Row list with thumbnails
<script src="..." data-layout="list"></script>

cards — Image cards
<script src="..." data-layout="cards"></script>

simple — Service tiles (minimal)
<script src="..." data-layout="simple"></script>

Tag filter — data-tag

Built

Filter to events that have a specific Planning Center tag. Comma-separate multiple tag names for OR logic — e.g. data-tag="Youth,Women's Ministry" shows events tagged either tag.

Filter by tag "Worship Services" — simple layout
<script src="..." data-layout="simple" data-tag="Worship Services"></script>

Tag + featured combined — list layout
<script src="..." data-layout="list" data-featured="true" data-tag="Worship Services"></script>

Rolling 7-day window — data-this-week

Built

Shows only events in the next 7 days from today. Perfect for "This Week's Services" homepage sections. Works with any layout.

This week — simple layout (homepage use case)
<script src="..." data-layout="simple" data-this-week="true" data-title="This Week's Services"></script>

This week — cards layout
<script src="..." data-layout="cards" data-this-week="true"></script>

Week navigation — data-allow-week-nav + data-nav-align

Built

Adds Prev / Next week navigation buttons to the simple layout. The label shows "This Week" / "Next Week" / "+N Weeks" and clicking it returns to the current week. data-nav-align controls button alignment: left, center (default), or right.

Week nav — align center (default)
<script src="..." data-layout="simple" data-allow-week-nav="true" data-nav-align="center" data-title="This Week's Services"></script>

Week nav — align left
<script src="..." data-layout="simple" data-allow-week-nav="true" data-nav-align="left"></script>

Week nav — align right
<script src="..." data-layout="simple" data-allow-week-nav="true" data-nav-align="right"></script>

Show past events — data-include-past

Built

By default, events that have already ended are hidden. Set data-include-past="true" to include them — useful for archive or recap pages. Default: false.

Include past — list layout
<script src="..." data-layout="list" data-include-past="true"></script>

Exclude past (default behavior shown explicitly)
<script src="..." data-layout="list" data-include-past="false"></script>

Also accepted: "1" / "0", "True" / "False", "TRUE" / "FALSE".

Event count — data-limit

Built (max 50) "ALL" not supported yet

Controls how many events to fetch. Default: 50. Currently capped at 50 — "ALL" is not yet a valid value.

Limit 3 — good for homepage previews
<script src="..." data-layout="cards" data-limit="3"></script>

Limit 6 — cards grid
<script src="..." data-layout="cards" data-limit="6"></script>

Tile columns — data-columns

Built (simple layout)

Controls tiles per row on the simple layout. Range: 1–8. Default: 2. Always collapses to 1 column on screens ≤480px regardless of this value.

1 column
<script src="..." data-layout="simple" data-columns="1"></script>

2 columns (default)
<script src="..." data-layout="simple" data-columns="2"></script>

3 columns
<script src="..." data-layout="simple" data-columns="3"></script>

Shadow style — data-shadow

Built

Controls the container shadow color theme. Default: blue.

shadow="blue" (default)
<script src="..." data-layout="simple" data-shadow="blue"></script>

shadow="burgundy"
<script src="..." data-layout="simple" data-shadow="burgundy"></script>

shadow="standard" (neutral gray)
<script src="..." data-layout="simple" data-shadow="standard"></script>

Custom heading — data-title

Built

Overrides the heading displayed above the widget. Any string is valid. If omitted, the widget auto-generates a heading from the filter context (e.g. "Featured Events", "Worship Services").

Custom title on simple layout
<script src="..." data-layout="simple" data-title="This Week's Services"></script>

Custom title on list layout
<script src="..." data-layout="list" data-title="Upcoming Events"></script>

Mount target — data-target

Built

Mount the widget into an existing element by DOM ID instead of auto-creating a container after the script tag. Useful when you need the widget inside a specific page region.

↑ This div has id="my-custom-container" — the widget will mount here

Widget mounted into #my-custom-container
<div id="my-custom-container"></div> <script src="..." data-layout="simple" data-target="my-custom-container"></script>

Useful Combinations

Built

Real-world patterns combining multiple options.

Homepage: This week's worship services, 3-col, with week nav, burgundy shadow
<script src="..." data-layout="simple" data-tag="Worship Services" data-this-week="true" data-allow-week-nav="true" data-columns="3" data-shadow="burgundy" data-title="This Week's Services"></script>

Events page: Full month calendar, featured events only
<script src="..." data-layout="table" data-featured="true" data-title="Featured Events"></script>

Ministry page: Cards, limited to 6, with tag filter
<script src="..." data-layout="cards" data-tag="Worship Services" data-limit="6" data-shadow="standard" data-title="Worship Events"></script>

Archive page: List with past events included
<script src="..." data-layout="list" data-include-past="true" data-limit="20" data-title="Past Events"></script>

Multi-tag OR filter — data-tag="tag1,tag2"

Built

Comma-separate tag names to show events matching ANY of the listed tags (OR logic). Case-insensitive. Single tag still works exactly as before.

Two tags OR — list layout
<script src="..." data-layout="list" data-tag="Worship Services,Special Events" data-title="Worship & Special Events"></script>

Tag OR + featured filter — cards
<script src="..." data-layout="cards" data-tag="Worship Services,Special Events" data-featured="true" data-limit="6"></script>

Hide end time — data-hide-end-time

Built

Show only the start time — hides the “– 10:30 AM” portion. Applies to simple, cards, and list layouts. Useful for service tiles where end times add clutter.

Hide end time — simple layout
<script src="..." data-layout="simple" data-hide-end-time="true" data-title="Services (start times only)"></script>

Hide end time — list layout
<script src="..." data-layout="list" data-hide-end-time="true"></script>

Hide widget when empty — data-hide-if-empty

Built

When zero events match the current parameters, the widget normally renders a "No upcoming events found" box that takes up space on the page. With data-hide-if-empty="true", the entire container collapses to nothing — no border, no message, no space. Works with all layouts and all filter combinations.

Primary use case: tag-filtered or this-week widgets on pages where that ministry or service may have no upcoming events. Without this flag you get an empty box; with it the section disappears entirely until events exist.

Hide if empty — tag-filtered simple layout
<script src="..." data-layout="simple" data-tag="Men's Ministry" data-this-week="true" data-hide-if-empty="true" data-title="Men's Ministry This Week"></script>

If no Men's Ministry events exist this week, nothing renders above — no box, no space.

Hide if empty — featured cards
<script src="..." data-layout="cards" data-featured="true" data-hide-if-empty="true" data-title="Featured Events"></script>

Roadmap — Features Not Yet Built

Not built

These were requested and are being evaluated for implementation:

Feature Proposed Attribute Notes
Fetch ALL events (no limit) data-limit="all" Currently hard-capped at 50 in the API. Removing the cap requires a PCO API pagination loop and a decision on performance trade-offs.