Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Warning: file_exists(): open_basedir restriction in effect. File(/var/www/efs/wp-content/plugins/memcached-is-your-friend/memcached-class-object-cache.php) is not within the allowed path(s): (/www/logichop_469/public:/www/logichop_469/mysqleditor:/www/logichop_469/web:/www/logichop_469/deploy:/www/logichop_469/deployment:/www/logichop_469/deployments:/www/logichop_469/tmp:/usr/share:/tmp:/dev/urandom) in /www/logichop_469/public/wp-content/object-cache.php on line 50

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-theme.php on line 544

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /www/logichop_469/public/wp-includes/comment-template.php on line 1745

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-includes/class-wp-block-list.php on line 199

Deprecated: Return type of Pimple\Container::offsetExists($id) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/wp-tools-gravity-forms-divi-module-premium/vendor/pimple/pimple/src/Pimple/Container.php on line 133

Deprecated: Return type of Pimple\Container::offsetGet($id) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/wp-tools-gravity-forms-divi-module-premium/vendor/pimple/pimple/src/Pimple/Container.php on line 98

Deprecated: Return type of Pimple\Container::offsetSet($id, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/wp-tools-gravity-forms-divi-module-premium/vendor/pimple/pimple/src/Pimple/Container.php on line 79

Deprecated: Return type of Pimple\Container::offsetUnset($id) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/wp-tools-gravity-forms-divi-module-premium/vendor/pimple/pimple/src/Pimple/Container.php on line 143

Deprecated: Return type of Gravity_Forms\Gravity_Forms\External_API\GF_API_Response::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/gravityforms/includes/external-api/class-gf-api-response.php on line 179

Deprecated: version_compare(): Passing null to parameter #1 ($version1) of type string is deprecated in /www/logichop_469/public/wp-content/plugins/gravityforms/includes/addon/class-gf-addon.php on line 5755

Deprecated: Return type of GF_Field::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/gravityforms/includes/fields/class-gf-field.php on line 93

Deprecated: Return type of GF_Field::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/gravityforms/includes/fields/class-gf-field.php on line 99

Deprecated: Return type of GF_Field::offsetSet($offset, $data) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/gravityforms/includes/fields/class-gf-field.php on line 108

Deprecated: Return type of GF_Field::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /www/logichop_469/public/wp-content/plugins/gravityforms/includes/fields/class-gf-field.php on line 117

Warning: The magic method AffiliateWP_Allow_Own_Referrals::__wakeup() must have public visibility in /www/logichop_469/public/wp-content/plugins/affiliatewp-allow-own-referrals/includes/class-affiliatewp-allow-own-referrals.php on line 131

Deprecated: Creation of dynamic property Cookie_Law_Info_Cli_Policy_Generator::$plugin_name is deprecated in /www/logichop_469/public/wp-content/plugins/cookie-law-info/admin/modules/cli-policy-generator/cli-policy-generator.php on line 176

Deprecated: Use of "self" in callables is deprecated in /www/logichop_469/public/wp-content/plugins/cookie-law-info/includes/class-cookie-law-info.php on line 606

Warning: Private methods cannot be final as they are never overridden by other classes in /www/logichop_469/public/wp-content/plugins/df-gravityforms-divi-plugin-premium/kirki/packages/kirki-framework/compatibility/src/Control.php on line 67

Warning: Private methods cannot be final as they are never overridden by other classes in /www/logichop_469/public/wp-content/plugins/df-gravityforms-divi-plugin-premium/kirki/packages/kirki-framework/compatibility/src/Control.php on line 103

Deprecated: Creation of dynamic property Kirki\Compatibility\Framework::$modules is deprecated in /www/logichop_469/public/wp-content/plugins/df-gravityforms-divi-plugin-premium/kirki/kirki.php on line 68

Deprecated: Optional parameter $text declared before required parameter $cart_item_key is implicitly treated as a required parameter in /www/logichop_469/public/wp-content/plugins/logichop-subscription-conduit/logichop-subscription-conduit.php on line 323

Deprecated: Creation of dynamic property WC_Sendinblue_Integration::$customizations is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-sendinblue-newsletter-subscription/woocommerce-sendinblue.php on line 136

Deprecated: Creation of dynamic property WC_Sendinblue_Integration::$ws_subscribe_enable is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-sendinblue-newsletter-subscription/woocommerce-sendinblue.php on line 153

Deprecated: Creation of dynamic property WC_Sendinblue_Integration::$ws_smtp_enable is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-sendinblue-newsletter-subscription/woocommerce-sendinblue.php on line 154

Deprecated: Creation of dynamic property WC_Sendinblue_Integration::$ws_template_enable is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-sendinblue-newsletter-subscription/woocommerce-sendinblue.php on line 156

Deprecated: Creation of dynamic property WC_Sendinblue_Integration::$ws_sms_enable is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-sendinblue-newsletter-subscription/woocommerce-sendinblue.php on line 157

Deprecated: Creation of dynamic property WOO_SL_functions::$query_vars is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-software-license/include/class.sl.functions.php on line 35

Deprecated: Creation of dynamic property WOO_SL::$licence is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-software-license/include/class.sl.php on line 21

Deprecated: Creation of dynamic property WCS_Retry_Admin::$setting_id is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce-subscriptions/includes/payment-retry/admin/class-wcs-retry-admin.php on line 22

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /www/logichop_469/public/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/SchemaController.php on line 66

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /www/logichop_469/public/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/SchemaController.php on line 69

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /www/logichop_469/public/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/RoutesController.php on line 86

Deprecated: Creation of dynamic property wpdb::$payment_tokenmeta is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$order_itemmeta is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$wc_product_meta_lookup is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$wc_tax_rate_classes is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$wc_reserved_stock is deprecated in /www/logichop_469/public/wp-includes/wp-db.php on line 668

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /www/logichop_469/public/wp-content/plugins/woocommerce/includes/wc-core-functions.php on line 1705

Deprecated: Creation of dynamic property WooCommerce::$api is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce/includes/class-woocommerce.php on line 554

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /www/logichop_469/public/wp-content/plugins/woocommerce/src/Internal/DownloadPermissionsAdjuster.php on line 157

Deprecated: Creation of dynamic property Automattic\WooCommerce\Database\Migrations\CustomOrderTable\PostToOrderTableMigrator::$table_names is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/PostToOrderTableMigrator.php on line 25

Deprecated: Creation of dynamic property Automattic\WooCommerce\Database\Migrations\CustomOrderTable\PostToOrderAddressTableMigrator::$table_names is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/PostToOrderAddressTableMigrator.php on line 42

Deprecated: Creation of dynamic property Automattic\WooCommerce\Database\Migrations\CustomOrderTable\PostToOrderOpTableMigrator::$table_names is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/PostToOrderOpTableMigrator.php on line 26

Deprecated: Creation of dynamic property Automattic\WooCommerce\Database\Migrations\CustomOrderTable\PostMetaToOrderMetaMigrator::$table_names is deprecated in /www/logichop_469/public/wp-content/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/PostMetaToOrderMetaMigrator.php on line 43
Logic Hop Goals - Logic Hop

Logic Hop Goals

Quick Reference

Overview

Goals are how Logic Hop stores user actions. You create a goal for any event or action you would like to store and track. When a goal is set for a user it is accessible for their current and future visits to your site.

Goals can be used within conditions to dynamically display content to a specific user or redirect them to a different page.

Uses for Goals include:

  • Did the user visit your site by clicking a specific link
  • Has the user purchased your product
  • Did the user abandon a shopping cart
  • Has the user viewed your overview video
  • Which options on a survey did the user select

Goals can be triggered on page load, when a condition is met or by a combination of events, including Javascript events. This allows for goals to be easily integrated with third-party plugins.

Goal Lifespan

Goals are stored by Logic Hop and associated with a user by a single cookie. Logic Hop Goals can be stored for up to a year per user. As with all cookies, Logic Hop data is specific to the user and their browser. If a user clears their cookies, the data will be disassociated with that browser.

Anatomy of a Goal

Goal Example

  • Goal Title
    • Used to generate Goal Slug – Example: newsletter-signup
  • Goal Description
    • Describes Goal functionality
  • Lead Score
    • Value to increment Lead Score by when goal is completed
    • Learn more about Lead Scores
  • Lead Score Increment Options
    • Increment on every complete
    • Increment on first complete only
    • Increment on first complete each session
  • Logic Tag
    • Logic Tag to copy & paste into WordPress content
  • Goal Slug
    • WordPress slug – Used when working with Javascript & PHP
  • Goal Group
    • Group(s) goal is associated with for segmentation (Optional)

Creating a Goal

Creating and managing goals with Logic Hop is similar to creating posts with WordPress.

  • Step 1
    • Click Goals under the Logic Hop menu in your WordPress Dashboard
  • Step 2
    • Click Add New or click the title a goal to edit
  • Step 3
    • Enter a title and description for the goal
      • It’s best to use short, descriptive titles such as Newsletter Signup
  • Step 4
    • Click Publish

Congratulations! Your Goal is now ready for use.

Note: Similar to WordPress Post and Page titles, the goal title becomes the slug for your goal. If you are using Javascript Tracking, the slug may be visible in the source code of your page. For example, a goal titled Newsletter Signup may appear as the following Javascript function: logichop_goal(‘newsletter-signup’);

Goal Groups

Goal Groups allow you to associate two or more goals together as a group. A single goal from a group can be active for a user at any given time. If the user is added to another goal within the group any other active goal from that group will be removed for the user.

For example:

  • You have the following three goals in a group titled User Type
    • Marketer
    • Designer
    • Developer
  • When the user visits a blog post about marketing, you assign them the Marketer goal
    • The user now has the Marketer goal
  • The user completes a form identifying themselves as a designer, you assign them the Designer goal
    • The Marketer goal is automatically removed
    • The user now has the Designer goal

A goal can be assigned to multiple groups. This can provide advanced segmentation scenarios.

Note Goal Groups are optional. Goals do not need to be assigned to a group.

Working with Goal Groups

Add a New Group to a Goal

  • Type a group name into the Goal Group input field and click Add
  • Click Publish or Update to save your goal

Add an Existing Group to a Goal

  • Click Choose from the most used groups
  • Click on the name of the group(s) you’d like to add
  • Click Publish or Update to save your goal

Remove a Goal from a Group

  • Click the (x) icon to the right of the Goal Group you’d like to remove
  • Click Publish or Update to save your goal

Using Goals

Set/Unset Goals from Anchor Links

Goals can be set and deleted when a user clicks on any <a> tag by simply adding a query string and Goal Slug to the URL.

Set a Goal from an Anchor Link

To set a Goal from an anchor link, add the query string ?logichop_goal= followed by the Goal Slug.

The following anchor link will set the Newsletter Subscribed goal when the link is clicked:

<a href="https://your-domain.com/about/?logichop_goal=newsletter-subscribed"

Unset a Goal from an Anchor Link

To unset, or delete, a Goal from an anchor link, add the query string ?logichop_goal_delete= followed by the Goal Slug.

The following anchor link will delete the Newsletter Subscribed goal when the link is clicked:

<a href="https://your-domain.com/?logichop_goal_delete=newsletter-subscribed"

Set a Goal and Unset a Goal from an Anchor Link

The following anchor link will set the Newsletter Subscribed goal when the link is clicked and delete the Just Browsing goal:

<a href="https://your-domain.com/?logichop_goal=newsletter-subscribed&logichop_goal_delete=just-browsing"

Set/Unset Goals from HTML Elements

Goals can be set based user interaction with HTML elements, such as clicking on a link. Simply add one of the following Goal Trigger CSS Classes along with a data-goal attribute with the Goal Slug.

Goal Trigger CSS Classes

  • logichop-click
  • logichop-dblclick
  • logichop-mouseenter
  • logichop-mouseleave
  • logichop-keypress
  • logichop-keydown
  • logichop-keyup
  • logichop-submit
  • logichop-change
  • logichop-focus
  • logichop-blur
  • logichop-load
  • logichop-resize
  • logichop-scroll
  • logichop-unload

The following example sets the goal Is a Marketer when a user clicks the link:

<a href="/marketing" class="logichop-click" data-goal="is-a-marketer">Marketing</a>

Delete a Goal from HTML Elements

To delete a goal using Goal Trigger CSS Classes add the data-delete=”true” attribute to your HTML element.

The following example deletes the goal Is a Marketer when a user clicks the link:

<a href="/marketing" class="logichop-click" data-goal="is-a-marketer" data-delete="true">Marketing</a>

Set/Unset Goals with Javascript

Goals can be set and unset with Javascript for use in themes and plugins. Pass a goal slug or ID into the __logichop_goal() or logichop_goal_delete()__ function.

The following example sets the newsletter-signup goal for the current user:

logichop_goal( 'newsletter-signup' );

The following example deletes the newsletter-signup goal for the current user:

logichop_goal_delete( 'newsletter-signup' );

Code Samples

Copy and paste the code samples into you pages and posts. Make sure to update the Goal Slug to match the slug of your goal.

Javascript samples require jQuery and use the default WordPress jQuery prefix.

Set Goal When Link is Clicked

The following code triggers a Goal when any HTML element with the class my-outbound-link is clicked. This works with link or any other element. Replace outbound-click with your Goal Slug.

<a href="https://stage.logichop.com" class="my-outbound-link">Check out Logic Hop!</a>

<script>
    jQuery('.my-outbound-link').click(function () {
        logichop_goal( 'outbound-click' );
    });
</script>

Set Goal When YouTube Video Playback Starts

The following code uses the YouTube Iframe API and triggers a goal when the video is played. Replace ‘##YOUTUBE VIDEO ID##’ with your YouTube Video ID and video-viewed with your Goal Slug.

<div id="player"></div>

<script>
    var tag = document.createElement('script');
    tag.src = 'https://www.youtube.com/iframe_api';
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    function onYouTubeIframeAPIReady () {
        new YT.Player('player', {
            videoId: '##YOUTUBE VIDEO ID##',
            events: {
                'onStateChange': function (e) {
                    if (e.data == 1) {
                        logichop_goal( 'video-viewed' );
                    }
        }
            }
        });
    }
</script>

Set Goal When Users Scrolls Within 100 Pixels of Page Bottom

The following code triggers a Goal when the user scrolls within 100 pixels of the bottom of the page. Replace scroll-bottom with your Goal Slug.

<script>
    jQuery(window).scroll(function() {
        if (jQuery(window).scrollTop() + jQuery(window).height() > jQuery(document).height() - 100) {
                logichop_goal( 'scroll-bottom' );
        }
    });
</script>

Set Goals with PHP

Goals can be set with PHP for use in themes and plugins. Pass a goal slug or ID into the __$logichop->set_goal()__ function. When the goal is set, true is returned. If there was a problem setting the goal, false is returned.

The following example sets the newsletter-signup goal for the current user:

global $logichop;

$result = $logichop->set_goal( 'newsletter-signup' );

Deleting a Goal

  • Step 1
    • Click Goals under the Logic Hop menu in your WordPress Dashboard.
  • Step 2
    • Click Trash under the title of the Goal you want to delete.

Note: It is best practice to delete or disable any Conditions or page-level logic that rely on Goals that have been removed.