Skip to content
GravityKit
Buy
Sign in
0 items
  • Plugins

    GravityKit All Access

    Our complete Kit of essential tools for extending and enhancing Gravity Forms—everything you need to build powerful web apps and workflows.

    Learn more
    • GravityView

      GravityView

      Bestseller

      Display Gravity Forms entries on the front-end of your site and build powerful web applications.

    • GravityImport

      GravityImport

      Trending

      Import entries from CSV files into Gravity Forms to transfer data, create new forms, or update existing entries.

    • GravityEdit

      GravityEdit

      Quickly edit Gravity Forms entries inline to save time, reduce clicks, and streamline your workflow.

    • GravityCharts

      GravityCharts

      Trending

      Turn Gravity Forms entries into interactive charts and graphs.

    • GravityActions

      GravityActions

      Update multiple Gravity Forms entries at once, send bulk emails, and streamline your workflow.

    • GravityCalendar

      GravityCalendar

      Turn Gravity Forms entries into dynamic calendars to showcase events, schedules, appointments, and more.

    • GravityExport

      GravityExport

      Export Gravity Forms entries to Excel, CSV, or PDF and share them instantly with secure download links.

    • GravityMath

      GravityMath

      Perform advanced calculations on Gravity Forms entries to display totals, averages, or build custom calculators.

    • GravityRevisions

      GravityRevisions

      Track, compare, and restore changes made to Gravity Forms forms and entries with a full version history.

    • GravityMigrate

      GravityMigrate

      Migrate all Gravity Forms data, including forms, entries, Views, feeds, uploads, and more.

    • GravityBoard

      GravityBoard

      Manage projects with collaborative project management. Coordinate with your team and streamline your workflows.

    • GravitySearch

      GravitySearch

      Search Gravity Forms entries across every form from one screen.

  • Ideal For

    • Nonprofits
    • Web Agencies
    • Education
    • Developers
    • Small Businesses
    • Startups
    Explore All Use Cases

    Case studies

    • West Fork Schools
    • Princeton University
    • BrightLeaf Giving
    • Jacksonville Port Authority
    • National Severe Storms Lab
    • Leadpal
    • Mediebruket
    • Dragonfly
    View All Case Studies
  • Resources

    • Blog
    • Case studies
    • GravityKit vs competitors
    • Live Demos
    • Documentation
    • Developer docs
    • GravityKit Academy
    • GravityKit Live!

    Ultimate guides

    • How to use Gravity Forms
    • Editing Gravity Forms entries
    • Importing Gravity Forms entries
    • Exporting Gravity Forms entries
    • Displaying Gravity Forms entries
    • Gravity Forms conditional logic
    • Gravity Forms calculations
    View More Articles
  • Plugins

    • GravityView

      GravityView

      Bestseller

      Display Gravity Forms entries on the front-end of your site and build powerful web applications.

    • GravityImport

      GravityImport

      Trending

      Import entries from CSV files into Gravity Forms to transfer data, create new forms, or update existing entries.

    • GravityEdit

      GravityEdit

      Quickly edit Gravity Forms entries inline to save time, reduce clicks, and streamline your workflow.

    • GravityCharts

      GravityCharts

      Trending

      Turn Gravity Forms entries into interactive charts and graphs.

    • GravityActions

      GravityActions

      Update multiple Gravity Forms entries at once, send bulk emails, and streamline your workflow.

    • GravityCalendar

      GravityCalendar

      Turn Gravity Forms entries into dynamic calendars to showcase events, schedules, appointments, and more.

    • GravityExport

      GravityExport

      Export Gravity Forms entries to Excel, CSV, or PDF and share them instantly with secure download links.

    • GravityMath

      GravityMath

      Perform advanced calculations on Gravity Forms entries to display totals, averages, or build custom calculators.

    • GravityRevisions

      GravityRevisions

      Track, compare, and restore changes made to Gravity Forms forms and entries with a full version history.

    • GravityMigrate

      GravityMigrate

      Migrate all Gravity Forms data, including forms, entries, Views, feeds, uploads, and more.

    • GravityBoard

      GravityBoard

      Manage projects with collaborative project management. Coordinate with your team and streamline your workflows.

    • GravitySearch

      GravitySearch

      Search Gravity Forms entries across every form from one screen.

    GravityKit All Access

    Our complete Kit of essential tools for extending and enhancing Gravity Forms—everything you need to build powerful web apps and workflows.

    Learn more
  • Ideal For

    • Nonprofits
    • Web Agencies
    • Education
    • Developers
    • Small Businesses
    • Startups
    Explore All Use Cases

    Case studies

    • West Fork Schools
    • Princeton University
    • BrightLeaf Giving
    • Jacksonville Port Authority
    • National Severe Storms Lab
    • Leadpal
    • Mediebruket
    • Dragonfly
    View All Case Studies

    How to build...

    • Property Management
    • Product Catalog
    • Fundraising Dashboard
    • Real Estate Directory
    • Document Library
    • Academic Journal
    • Volunteer Management
    • Meal Tracker
    View All Guides
  • Resources

    • Blog
    • Case studies
    • GravityKit vs competitors
    • Live Demos
    • Documentation
    • Developer docs
    • GravityKit Academy
    • GravityKit Live!

    ultimate guides

    • How to use Gravity Forms
    • Editing Gravity Forms entries
    • Importing Gravity Forms entries
    • Exporting Gravity Forms entries
    • Displaying Gravity Forms entries
    • Gravity Forms conditional logic
    • Gravity Forms calculations
    View More Articles
  • Support
  • Pricing
0 items

Search

Results appear automatically as you type.
Loading results…

results found matching

    Sign in
    Buy

    Docs

    • Docs Home

    Gravity Forms Add-Ons

    • GravityView
    • GravityActions
    • GravityBoard
    • GravityCalendar
    • GravityCharts
    • GravityEdit
    • GravityExport
    • GravityImport
    • GravityMath
    • GravityMigrate
    • GravityRevisions
    • GravitySearch
    • GF Widget for Elementor
    • GF Dynamic Lookup
    • GF Entry Tags
    • GF Event Field
    • GravityExport Lite
    • GF Zero Spam

    GravityView

    • Getting Started
    • View Setup
    • FAQ
    • Pre-Sale
    • Advanced
    • Common Problems
    • Customizing Your Views
    • Edit Entry
    • Entry Approval
    • Filter and Sort Results
    • Gravity Forms
    • Merge Tags
    • Roles and Capabilities
    • Search
    • Shortcodes
    • View Settings
    • WordPress Posts

    General Help

    • Account, Invoices, and Billing
    • License Related
    • Plugins and Settings
    • Contact
    • Docs Home
    • Gravity Forms Add-Ons

      • GravityView
      • GravityActions
      • GravityBoard
      • GravityCalendar
      • GravityCharts
      • GravityEdit
      • GravityExport
      • GravityImport
      • GravityMath
      • GravityMigrate
      • GravityRevisions
      • GravitySearch
      • GF Widget for Elementor
      • GF Dynamic Lookup
      • GF Entry Tags
      • GF Event Field
      • GravityExport Lite
      • GF Zero Spam
    • GravityView

      • Getting Started
      • View Setup
      • FAQ
      • Pre-Sale
      • Advanced
      • Common Problems
      • Customizing Your Views
      • Edit Entry
      • Entry Approval
      • Filter and Sort Results
      • Gravity Forms
      • Merge Tags
      • Roles and Capabilities
      • Search
      • Shortcodes
      • View Settings
      • WordPress Posts
    • General Help

      • Account, Invoices, and Billing
      • License Related
      • Plugins and Settings
    • Contact

    Gravity Forms Event Field

    • Customizing repeat schedules in the Event field
    • Adding custom repeat schedules to the Event field
    • Event Field events are showing as all-day in GravityCalendar
    • Getting started with the Gravity Forms Event field
    • Home
    • Docs
    • Gravity Forms Event Field
    • Customizing repeat schedules in the Event field

    Customizing repeat schedules in the Event field

    Estimated reading: 6 minutes

    Updated on August 10, 2026

    The Event field supports four repeat frequencies: Every Day, Every Week, Every Month, and Every Year. Two filters let developers adjust how a recurrence is stored and which options appear in the Repeat Frequency dropdown. This guide documents what those filters can do and, just as important, what they cannot.

    Filter availability:

    • gk/field-event/cron-value ships since 1.1.0. It received one argument until 1.7.0, which added five more.
    • gk/field-event/inputs/repeat-input ships since 1.4.2.

    There is no released filter for adding new repeat frequencies. Read What you cannot do before attempting it.

    Prerequisites #

    Before you begin, ensure that you have:

    • The Gravity Forms Event Field plugin installed and activated
    • Basic knowledge of WordPress hooks and filters

    Read Adding custom PHP code snippets to your website to learn where to place these code snippets.

    How recurrence is stored #

    When someone submits a repeating event, the field converts their dropdown selection into a five-part scheduling expression pinned to the event’s start date and time. The entry stores that expression, not the dropdown value.

    For an event starting Saturday, March 14, 2026 at 2:30 PM:

    SelectionStored expressionRecurrence intervalThe calendar draws
    Every Day30 14 * * *1 dayEvery day
    Every Week30 14 * * 61 weekEvery Saturday
    Every Month30 14 14 * *1 monthThe 14th of each month
    Every Year30 14 14 03 *1 yearMarch 14 each year

    All-day events, and events submitted without a start time, store 00 09 (9:00 AM) as the time.

    Everything downstream reads this expression back by its shape:

    • GravityCalendar maps the expression to one of exactly four intervals (daily, weekly, monthly, yearly) by counting wildcards, then draws occurrences by stepping that fixed interval from the start date.
    • The entry edit view (WordPress admin and GravityView Edit Entry) maps the expression back to one of the four dropdown values the same way.
    • The entry display renders it as prose, such as “Every Saturday at 14:30”.

    These four shapes are the field’s complete recurrence vocabulary.

    Changing the stored expression #

    The gk/field-event/cron-value filter runs while an entry is being saved, after the expression is built and before it is stored. It runs only when the submitter selected a repeat frequency.

    Its first argument is an array with the keys minute, hour, day_month, month, and day_week. Each value is a number or *. Return the modified array; the plugin joins it with spaces in that key order.

    Version 1.7.0 added five more arguments describing the submission the expression came from. Callbacks written for the single-argument form keep working, since WordPress passes only as many arguments as a callback registered for.

    ArgumentTypeValue
    $cronarrayThe expression parts.
    $cyclestringThe submitted frequency: every_day, every_week, every_month or every_year.
    $start_datestringThe event start date, in Y-m-d format.
    $timestampintThe start date as a Unix timestamp.
    $is_all_day_eventboolWhether the event runs all day.
    $start_timestring|nullThe submitted start time. Null for an all-day event, and null when none was submitted.

    Example: pin all repeating events to a specific time

    /**
     * Store every recurrence at 6:00 PM, regardless of the submitted start time.
     *
     * @param array $cron The expression parts: minute, hour, day_month, month, day_week.
     *
     * @return array The modified expression parts.
     */
    add_filter( 'gk/field-event/cron-value', function ( $cron ) {
    	$cron['minute'] = '00';
    	$cron['hour']   = '18';
    
    	return $cron;
    } );

    Example: move weekly events to a fixed weekday

    /**
     * Recur weekly events on Monday instead of the submitted start date's weekday.
     *
     * @param array $cron The expression parts.
     *
     * @return array The modified expression parts.
     */
    add_filter( 'gk/field-event/cron-value', function ( $cron ) {
    	$is_weekly = '*' !== $cron['day_week'];
    
    	if ( $is_weekly ) {
    		$cron['day_week'] = '1'; // Monday. Sunday is 0.
    	}
    
    	return $cron;
    } );

    Example: retime one frequency only (1.7.0 and later)

    /**
     * Move weekly recurrences to 6:00 PM and leave every other frequency alone.
     *
     * @param array  $cron  The expression parts.
     * @param string $cycle The submitted repeat frequency.
     *
     * @return array The modified expression parts.
     */
    add_filter( 'gk/field-event/cron-value', function ( $cron, $cycle ) {
    	if ( 'every_week' === $cycle ) {
    		$cron['hour'] = '18';
    	}
    
    	return $cron;
    }, 10, 2 );

    Register the callback for as many arguments as it uses. WordPress passes only that many.

    Rules for this filter

    • Use plain numeric values or * only. Cron patterns such as */2, 1#3, or L are not supported. The interval mapping counts wildcard characters, so */2 in the minute slot turns a weekly event into a daily one, and the entry display cannot render pattern values.
    • Keep the expression in one of the four shapes shown in the table above. Any other shape produces a recurrence the calendar and edit view will misread.
    • Before 1.7.0 the filter receives only the expression array. Infer the frequency from which slots are set: day_week set means weekly, day_month set means monthly, day_month and month set means yearly, all wildcards means daily. From 1.7.0, read $cycle instead.
    • It runs at save time only. Existing entries keep the expression they were saved with.

    Changing the dropdown #

    The gk/field-event/inputs/repeat-input filter runs when the Repeat Frequency input renders. It receives the input’s full configuration array, including options. Use it to remove or relabel the built-in frequencies.

    Example: remove the daily option

    /**
     * Remove "Every Day" from the Repeat Frequency dropdown.
     *
     * @param array $repeat The repeat input configuration.
     *
     * @return array The modified configuration.
     */
    add_filter( 'gk/field-event/inputs/repeat-input', function ( $repeat ) {
    	unset( $repeat['options']['every_day'] );
    
    	return $repeat;
    } );

    Removing an option does not change entries already saved with that frequency. Those events keep recurring, and the edit view cannot re-select the removed option.

    Do not use this filter to add new options. The next section explains why.

    What you cannot do #

    Adding a custom option to the dropdown does not create a custom schedule. The save routine recognizes only the four built-in values. Any other value falls through and stores the daily expression. The result is silently wrong data:

    1. The submitter picks the custom option, for example “Every 3rd Monday”.
    2. The entry stores 00 09 * * *, the daily expression.
    3. The calendar draws the event every single day.
    4. Reopening the entry shows “Every Day” selected. The custom choice is gone, because the entry stores the expression, not the dropdown value.

    Pairing a custom option with a gk/field-event/cron-value callback does not fix this. The best a callback can do is produce one of the four supported shapes, so “Every 3rd Monday” becomes, at best, every Monday.

    Schedules outside the four built-in frequencies are not expressible. That includes every two weeks, quarterly, twice monthly, “every 3rd Monday”, and “last Friday of the month”. The stored format has four shapes, the interval mapping has four outputs, and the calendar steps by a fixed interval from the start date. No filter combination changes that.

    If your project needs one of these schedules, contact GravityKit support and describe the use case. This requires a plugin feature, not a code snippet.

    Troubleshooting #

    A custom dropdown option saves as “Every Day”

    This is the expected result of an unsupported customization. Read What you cannot do.

    Repeating events recur at 9:00 AM instead of the event time

    All-day events, and events submitted without a start time, pin recurrence to 9:00 AM. Use gk/field-event/cron-value to store a different time.

    A filter change has no effect on existing events

    gk/field-event/cron-value runs when an entry is saved. Entries saved before the filter was added keep their stored expression until they are saved again.

    The calendar draws a weekly event every day

    The stored expression has an extra wildcard, usually from a */2-style pattern. Use plain numeric values or * in every slot.

    Still stuck? How can we help?

    How can we help?

    "*" indicates required fields

    This field is for validation purposes and should be left unchanged.
    Replies will go to this email.
    How can we help?*
    My pre-sale question is related to...*
    My WordPress skills are....*
    My Gravity Forms skills are...*
    You will be shown articles from our documentation.
    Vous pouvez nous écrire dans votre langue maternelle si c’est plus facile pour vous—nous nous occuperons de la traduction!
    Puedes escribirnos en tu idioma nativo si te resulta más fácil; ¡nosotros nos encargamos de la traducción!
    Sie können uns in Ihrer Muttersprache schreiben, wenn das für Sie einfacher ist – wir kümmern uns um die Übersetzung!
    U kunt ons in uw moedertaal schrijven als dat gemakkelijker voor u is — wij zorgen voor de vertaling!
    Du kan skrive til oss på ditt morsmål hvis det er enklere for deg — vi tar oss av oversettelsen!
    Du kan skriva till oss på ditt modersmål om det är lättare för dig — vi tar hand om översättningen!
    Você pode nos escrever em seu idioma nativo se for mais fácil para você — nós cuidaremos da tradução!
    Puoi scriverci nella tua lingua madre se ti è più facile — penseremo noi alla traduzione!
    Please provide as much detail as you're able; this helps us provide you with faster support.
    Drop files here or
    Accepted file types: jpg, jpeg, gif, png, tiff, pdf, bmp, zip, json, csv, xls, xlsx, Max. file size: 256 MB.
      Stay informed?

      Was this page helpful?

      Table Of Contents
      • Prerequisites
      • How recurrence is stored
      • Changing the stored expression
      • Changing the dropdown
      • What you cannot do
      • Troubleshooting
      GravityKit
      • How to Build It
      • GravityKit vs competitors
      • Pricing
      • Products
      • Our Team
      • Our Values
      • Work With Us
      • Coupons
      Support
      • Support
      • Contact
      • Documentation
      • Scope of Support
      • Brand Guidelines
      • Privacy Policy
      • Terms of Service (“Terms”)
      I am a...
      • Nonprofit
      • Web agency
      • Small business owner
      • Web developer
      • Educational institution
      • WordPress freelancer
      • Startup founder
      • One-person agency
      Get notified of updates.

      We’re constantly improving GravityKit. Fill out your email below and we’ll notify you anytime major updates drop.

      • Facebook
      • Twitter
      • Mastodon
      GravityKit is a Gravity Forms Certified Developer.

      Copyright © 2026, Katz Web Services, Inc.

      GravityKit and GravityView are registered trademarks of Katz Web Services, Inc.

      Floaty, GravityKit's astronaut mascot, relaxing on a beach lounger

      Gravity Summer Sale ☀️

      50% off our entire toolkit • From 25% off for the rest of the community

      Shop the Sale