---
schema_version: "1"
id: f4f5c4efaf98f8c045e999f7c4e4b91b6e3d2520851599e2bbb487e7612f7a97
title: Options for Dynamic Data in Salesforce Spiff Plans
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/sales/264-0-0/spiff_plans_dynamic.md
canonical_url: https://help.salesforce.com/s/articleView?id=sales.spiff_plans_dynamic.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: b52a3751b6406a9d736bdb7bc7c2c1a5c2611e7d773320080515d9f482bd4a36
description: In Salesforce Spiff, manage plans more efficiently by making some fields dynamic instead of static. To help you choose the best options, review pros and cons.
products:
  - Sales Cloud
  - Sales Enablement
release: "264"
---
# Options for Dynamic Data in Salesforce Spiff Plans

In Salesforce Spiff, manage plans more efficiently by making some fields dynamic instead of static. To help you choose the best options, review pros and cons.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: both Salesforce Classic (not available in all orgs) and Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: <strong>Enterprise</strong>, <strong>Unlimited</strong>, and <strong>Developer</strong> Editions</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available for an additional cost in: <strong>Professional</strong> Edition with Web Services API Enabled</td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:33.33333333333333%">
          <col style="width:33.33333333333333%">
          <col style="width:33.33333333333333%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d85457e78">Option</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d85457e81">Pros</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d85457e84">Cons</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e78 ">OR filters for period changes</td>

            <td data-label="Pros" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e81 ">Minimizes filter and rule maintenance. You don't have to create duplicate year-specific filters or duplicate year-specific rules, and you don't have to update filters assigned to rules or accumulated variables.</td>

            <td data-label="Cons" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e84 ">Takes longer to process data and consumes more server resources. An OR filter isn't an ideal solution for large or complex data filters.</td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e78 "><code>vlookup</code> function for value changes</td>

            <td data-label="Pros" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e81 ">
              <ul>
                <li>Requires only future table updates, not logic updates.</li>

                <li>Supports mid-period changes.</li>

              </ul>
            </td>

            <td data-label="Cons" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e84 ">
              <ul>
                <li>Takes longer to implement.</li>

                <li>Requires every possible input, including years, in the table as a hard-coded value.</li>

                <li>Requires some Designer knowledge for maintenance.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e78 "><code>range_lookup</code> function for value changes</td>

            <td data-label="Pros" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e81 ">
              <ul>
                <li>Requires only future table updates, not logic updates. If no changes occur in the future, no table updates are required.</li>

                <li>Supports mid-period changes.</li>

                <li>Requires only dates that changes occur, and doesn't require every possible input.</li>

              </ul>
            </td>

            <td data-label="Cons" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e84 ">
              <ul>
                <li>Takes longer to implement.</li>

                <li>Requires some Designer knowledge for maintenance.</li>

                <li>Isn't specific to individual reps.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e78 ">Quota tables for rate changes</td>

            <td data-label="Pros" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e81 ">
              <ul>
                <li>Doesn't require Designer knowledge.</li>

                <li>Supports quick updates for individual reps.</li>

              </ul>
            </td>

            <td data-label="Cons" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e84 ">
              <ul>
                <li>Supports only yearly, quarterly, or monthly changes.</li>

                <li>Requires that you add new values regularly, even if there aren't changes.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e78 ">Plan assignment updates for rate changes</td>

            <td data-label="Pros" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e81 ">
              <ul>
                <li>Doesn't require Designer knowledge.</li>

                <li>Supports updates for individual reps by adding a plan assignment row for each rep whenever a change occurs.</li>

                <li>Combines with other options, such as creating multiple range tables for specific reps or specific plans.</li>

              </ul>
            </td>

            <td data-label="Cons" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e84 ">Requires extra logic for mid-period changes to avoid double payment.</td>

          </tr>
          <tr class="">
            <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e78 ">Manual uploads for rate, value, or role changes</td>

            <td data-label="Pros" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e81 ">
              <ul>
                <li>Represents the most dynamic option.</li>

                <li>Supports multiple types of changes at once.</li>

                <li>Requires only future uploads, not logic updates.</li>

              </ul>
            </td>

            <td data-label="Cons" class="slds-cell-wrap" style="vertical-align:top;" headers="d85457e84 ">
              <ul>
                <li>Takes longer to implement.</li>

                <li>Requires knowledge of data practices and upload processes.</li>

              </ul>
            </td>

          </tr>
        </tbody>
      </table>