Feed error codes (legacy)

Feed Error Notifications

The Actions Center sends automatic notification emails if a feed is uploaded with errors. These are sent to the support/escalation technical contact for a partner and will include error codes from the table below. After gaining access to the Partner Portal (cf. Guides), you can set your contact email addresses in the Account and Users page (documentation).

The emails that the Actions Center sends out will contain the error codes and the data from the feed item that is causing the error. If the specified field is not listed in the data, that means that the field was either left out of the feed or had its default value.

Feed Error Codes

  // A list of errors that may be thrown during feed ingestion.
  //
  // Next ID: 83
  enum Error {
    // Unused.
    ERROR_UNSPECIFIED = 0;

    // Timestamp represents either a time too early in the past, or too far in
    // the future to represent a valid value. This error is mainly intended to
    // catch errors with units, like microseconds vs. milliseconds, or seconds.
    TIMESTAMP_OUT_OF_RANGE = 1;

    // Duration is either negative, or too large, or too small to represent a
    // valid duration. This error is mainly intended to catch errors with units,
    // like microseconds vs. milliseconds, or seconds.
    DURATION_OUT_OF_RANGE = 2;

    // Start time is earlier than end time, or the individual timestamps which
    // make-up the timerange are themselves out of valid range.
    INVALID_TIME_RANGE = 3;

    // The price is either too small a fraction to be useful (e.g. one millionth
    // of a dollar), or too large (e.g. one million dollars) to represent a
    // correct price. Note that zero dollars is accepted and means "free".
    // This error is mainly intended to catch errors with units, like
    // microdollars vs. whole dollars.
    PRICE_OUT_OF_RANGE = 4;

    // The currency code is not supported.
    INVALID_CURRENCY_CODE = 5;

    // The tax rate is either too small a fraction to be useful (e.g. one
    // millionth of a percent), or to large to be an correct tax rate
    // (e.g. 1000%). Note that zero is accepted and means no tax. This error is
    // mainly intended to catch errors with units, like micro-percent vs.
    // percent.
    TAX_RATE_OUT_OF_RANGE = 6;

    // A record was sent within a restriction, but does not belong within that
    // restriction. e.g. service_availability restrict between Jan 1st 2017 and
    // Jan 2nd 2017, with an availability slot for Jan 3rd 2017.
    RECORD_OUT_OF_RESTRICTION = 7;

    // The total or open spot count of an availability slot is either negative,
    // or too large to represent a correct spot count (e.g. 1 million spots).
    AVAILABILITY_SPOT_COUNT_OUT_OF_RANGE = 8;

    // Restricts are only useful to remove availability slots, and incremental
    // feeds don’t ever remove slots. Using both together is always a mistake.
    AVAILABILITY_RESTRICT_IN_INCREMENTAL_FEED = 9;

    // The id of a Merchant, Service or PaymentOption is missing.
    MISSING_ID = 10;

    // The name of a Merchant, Service, PaymentOption, or event entity is
    // missing.
    MISSING_NAME = 11;

    // The address of a Merchant or Service-level location is missing.
    MISSING_ADDRESS = 12;

    // The price of a PaymentOption is missing.
    MISSING_PRICE = 13;

    // Multiple payment options with the same payment_option_id are present in
    // the Merchant feed, and are not identical.
    CONFLICTING_PAYMENT_OPTION = 14;

    // Used when schedule exceptions are present but no recurrence.
    MISSING_RECURRENCE = 15;

    // The start of an exception must not exceed the duration of the final
    // slot. The end of an exception must not terminate before the beginning
    // of the first slot.
    SCHEDULE_EXCEPTION_OUT_OF_RECURRENCE = 16;

    // More than one payment option id override was found in an availability
    // slot. Only one is allowed.
    TOO_MANY_PAYMENT_OPTIONS = 17;

    // Used when staff_id or room_id is provided and the corresponding name
    // field is empty.
    MISSING_RESOURCES = 18;

    // The tokenization configuration is malformed.
    TOKENIZATION_CONFIG = 19;

    // Used when a required field is not set.
    MISSING_REQUIRED_FIELD = 20;

    // The provided MerchantMatchingHints message is invalid.
    INVALID_MATCHING_HINTS = 21;

    // The given URL is considered harmful and therefore not allowed by Google,
    // or it is not allowed to be served on Google domains due to FTC Opt-out
    // regulation.
    BAD_OR_INELIGIBLE_URL = 22;

    // The service attribute provided on the merchant was invalid.
    INVALID_SERVICE_ATTRIBUTE = 23;

    // The scheduling rules provided on the service was invalid.
    INVALID_SCHEDULING_RULES = 24;

    // The waitlist rules message provided on the service was invalid.
    INVALID_WAITLIST_RULES = 25;

    // The provided last_bookable_sec is later than the start_sec.
    LAST_BOOKABLE_SEC_AFTER_START_SEC = 26;

    // The provided first_bookable_sec is later than the start_sec.
    FIRST_BOOKABLE_SEC_AFTER_START_SEC = 29;

    // The provided last_online_cancellable_sec is later than the start_sec.
    LAST_ONLINE_CANCELLABLE_SEC_AFTER_START_SEC = 49;

    // The supported_resources message on the merchant was invalid.
    INVALID_SUPPORTED_RESOURCES = 27;

    // Recurrences over 24h are not supported.
    RECURRENCE_TOO_LONG = 28;

    // An entity in TicketingVerticalSpecificData is invalid.
    INVALID_ENTITY = 43;

    // An invalid combination of ticketing entity type and event
    // category/entity role.
    INVALID_ENTITY_TYPE_COMBINATION = 30;

    // Indicates the incorrect prepayment type was set for the service's price
    // display type. E.g. Any service that uses PriceInterpretation.STARTS_AT
    // must use PrepaymentType.NOT_SUPPORTED.
    INVALID_PREPAYMENT_TYPE_FOR_PRICE_INTERPRETATION = 31;

    // The type provided on the service is invalid. The aggregator does not have
    // multiple booking transaction flows scheduling capability, and the type is
    // not supported by the aggregator vertical. E.g., An appointment-based
    // service is provided by an order-based aggregator.
    INVALID_SERVICE_TYPE = 32;

    // The provided service_name is invalid.
    INVALID_SERVICE_NAME = 54;

    // Indicates the provided prepayment terms is invalid.
    INVALID_PREPAYMENT_TERMS = 50;

    // Indicates the localized text message default value is empty.
    MISSING_TEXT = 33;

    // Indicates the locale of a localized text is missing.
    MISSING_TEXT_LOCALE = 34;

    // Indicates duplicate locales in a localized text.
    DUPLICATE_TEXT_LOCALE = 40;

    // Indicates the value of a localized text is missing.
    MISSING_TEXT_VALUE = 35;

    // Indicates a text value is over the max allowable length for that text.
    ABOVE_MAX_TEXT_LENGTH = 69;

    // Indicates that a service-level location does not contain enough
    // information. E.g, a service-level location must be supplied at least one
    // of fields below: place_id, geo_coordinates or description.
    MISSING_SERVICE_LOCATION = 36;

    // The type provided for the location is invalid.
    INVALID_LOCATION_TYPE = 37;

    // The location id has duplicates in the same service.
    DUPLICATE_LOCATION_ID = 38;

    // The location id is not valid.
    INVALID_LOCATION_ID = 39;

    // The refund condition provided on the scheduling rule is not valid.
    INVALID_REFUND_CONDITION = 41;

    // MusicBrainz ID provided for an entity is invalid.
    INVALID_MUSICBRAINZ_ID = 42;

    // Rating provided is not valid;
    INVALID_RATING = 44;

    // The intake form field is not valid. Some fields are only valid for
    // specific field types.
    INVALID_INTAKE_FORM_FIELDS = 45;

    // The target of a Review is missing.
    MISSING_TARGET = 46;

    // The content (i.e., both rating and text) of a Review is missing.
    MISSING_CONTENT = 47;

    // The type provided for the ticket redemption method is invalid.
    INVALID_TICKET_REDEMPTION_TYPE = 48;

    // ServiceType of a virtual service should alway be set as
    // SERVICE_TYPE_ONLINE_APPOINTMENT.
    INVALID_VIRTUAL_SERVICE_TYPE = 51;

    // This error is shown when there is not valid payment option for the
    // virtual service.
    MISSING_VIRTUAL_SERVICE_PAYMENT_OPTION = 52;

    // Direct merchant payment is currently only allowed for virtual service and
    // not allowed for other service types. Also direct_merchant_payment is not
    // allowed for service with pre-payment as required.
    INVALID_DIRECT_MERCHANT_PAYMENT = 53;

    // [BEGIN Generic Feed error types]

    // The entity type could not be extracted from the chunked entity value.
    DATA_RECORD_ENTITY_EXTRACTION_FAILED = 55;

    // The extracted entity type is empty.
    DATA_RECORD_ENTITY_TYPE_EMPTY = 56;

    // The extracted entity type does not have a Key configuration.
    DATA_RECORD_MISSING_ENTITY_KEY = 57;

    // Key extractors could not be built from the rules specified in the feed
    // configuration.
    DATA_RECORD_INVALID_KEY_EXTRACTORS = 58;

    // The extracted entity type is not valid.
    DATA_RECORD_INVALID_ENTITY_TYPE = 59;

    // An entity key could not be extracted from the chunked entity value.
    DATA_RECORD_KEY_EXTRACTION_FAILED = 60;

    // The primary key could not be extracted from the entity value.
    PROTO_KEY_EXTRACTION_FAILED = 78;

    // Duplicate primary keys were detected in the feed.
    DUPLICATE_KEY_DETECTED = 79;

    // The CDS F2 write failed.
    F2_WRITE_FAILED = 80;

    // [END Generic Feed error types]
    // The merchant or service contains action links for an action type that //
    // may not support food ordering metadata.
    UNSUPPORTED_ACTION_TYPE_FOR_FOOD_ORDERING_METADATA = 61;

    // The merchant or service contains action links with invalid food ordering
    // metadata.
    INVALID_ACTION_LINK_FOOD_ORDERING_METADATA = 62;

    // The chunked entity value could not be parsed from the input file.
    DATA_RECORD_ENTITY_VALUE_PARSING_FAILED = 63;

    // The service ranking hint is invalid.
    INVALID_RANKING_HINT = 64;

    // Duplicate option of UnsupportedPartySizeOption has been set.
    DUPLICATE_UNSUPPORTED_PARTY_SIZE_OPTION = 65;

    // UnsupportedPartySizeOption must have a value.
    UNSUPPORTED_PARTY_SIZE_OPTION_KIND_EMPTY = 66;

    // Reservation linkout experience is not supported.
    UNSUPPORTED_RESERVATION_LINKOUT_TEMPLATE = 67;

    // Reservation linkout experience, which uses linkout_required_reason, is
    // not supported.
    UNSUPPORTED_LINKOUT_REQUIRED_REASON = 68;

    // A merchant has services with duplicate names within a locale.
    DUPLICATE_SERVICE_NAMES = 70;

    // A merchant is missing descriptions for many of its services.
    PROVIDED_SERVICE_DESCRIPTIONS_BELOW_THRESHOLD = 71;

    // A merchant has services with duplicate (name, duration, category, price).
    DUPLICATE_SERVICES = 72;

    // The entity type could not be extracted from a proto value in an input
    // file.
    PROTO_ENTITY_PARSING_FAILED = 73;

    // An ActionDetail has the same Entity ID as another
    DUPLICATE_ENTITY_ID = 74;

    // The action link is empty
    EMPTY_ACTION_LINK = 75;

    // The Action link does not contain any Actions
    MISSING_LINK_ACTIONS = 76;

    // The Entity is missing it's location field
    MISSING_ENTITY_LOCATION = 77;

    // The service_id is invalid.
    INVALID_SERVICE_ID = 81;

    // The text locale is invalid.
    INVALID_TEXT_LOCALE = 82;
  }