Google Shopping Merchant Conversions API client library for managing conversion sources and tracking.
82
Core data structures for the Google Shopping Merchant Conversions API, including conversion sources, attribution settings, and all request/response message types. These types are built on Protocol Buffers and provide strong typing for API interactions.
Represents a conversion source owned by a merchant account. A merchant account can have up to 200 conversion sources.
class ConversionSource:
name: str # Output only. Format: accounts/{account}/conversionSources/{conversion_source}
state: ConversionSource.State # Output only. Current state of the conversion source
expire_time: timestamp_pb2.Timestamp # Output only. Expiration time for archived sources
controller: ConversionSource.Controller # Output only. Controller of the conversion source
# Oneof source_data - exactly one must be set
google_analytics_link: GoogleAnalyticsLink # Google Analytics link configuration
merchant_center_destination: MerchantCenterDestination # Merchant Center destination
class ConversionSource.State(Enum):
STATE_UNSPECIFIED = 0 # Unspecified state
ACTIVE = 1 # Fully functional
ARCHIVED = 2 # Archived, not functional but can be restored within 30 days
PENDING = 3 # Creation started but not fully finished yet
class ConversionSource.Controller(Enum):
CONTROLLER_UNSPECIFIED = 0 # Unspecified controller
MERCHANT = 1 # Controlled by the merchant
YOUTUBE_AFFILIATES = 2 # Controlled by YouTube affiliatesUsage Example:
from google.shopping import merchant_conversions_v1
# Create conversion source with Google Analytics link
ga_link = merchant_conversions_v1.GoogleAnalyticsLink(
property_id=123456789,
attribution_settings=merchant_conversions_v1.AttributionSettings(
attribution_lookback_window_days=30,
attribution_model=merchant_conversions_v1.AttributionSettings.AttributionModel.CROSS_CHANNEL_LAST_CLICK
)
)
conversion_source = merchant_conversions_v1.ConversionSource(
google_analytics_link=ga_link
)
# Check conversion source state
if conversion_source.state == merchant_conversions_v1.ConversionSource.State.ACTIVE:
print("Conversion source is active")Settings for attribution configuration that control how conversions are attributed to different channels and touchpoints.
class AttributionSettings:
attribution_lookback_window_days: int # Number of days to look back for attribution
attribution_model: AttributionSettings.AttributionModel # Attribution model to use
conversion_type: List[AttributionSettings.ConversionType] # List of conversion types
class AttributionSettings.AttributionModel(Enum):
ATTRIBUTION_MODEL_UNSPECIFIED = 0 # Unspecified attribution model
CROSS_CHANNEL_LAST_CLICK = 1 # Cross-channel Last Click model
ADS_PREFERRED_LAST_CLICK = 2 # Ads-preferred Last Click model
CROSS_CHANNEL_DATA_DRIVEN = 5 # Cross-channel Data Driven model
CROSS_CHANNEL_FIRST_CLICK = 6 # Cross-channel First Click model
CROSS_CHANNEL_LINEAR = 7 # Cross-channel Linear model
CROSS_CHANNEL_POSITION_BASED = 8 # Cross-channel Position Based model
CROSS_CHANNEL_TIME_DECAY = 9 # Cross-channel Time Decay model
class AttributionSettings.ConversionType:
name: str # Name of the conversion type
report: bool # Whether to report this conversion typeUsage Example:
from google.shopping import merchant_conversions_v1
# Create attribution settings with conversion types
conversion_type = merchant_conversions_v1.AttributionSettings.ConversionType(
name="purchase",
report=True
)
attribution_settings = merchant_conversions_v1.AttributionSettings(
attribution_lookback_window_days=30,
attribution_model=merchant_conversions_v1.AttributionSettings.AttributionModel.CROSS_CHANNEL_DATA_DRIVEN,
conversion_type=[conversion_type]
)Configuration for linking to a Google Analytics property as a conversion source.
class GoogleAnalyticsLink:
property_id: int # Google Analytics property ID
attribution_settings: AttributionSettings # Attribution configuration for this linkUsage Example:
from google.shopping import merchant_conversions_v1
# Create Google Analytics link
ga_link = merchant_conversions_v1.GoogleAnalyticsLink(
property_id=123456789,
attribution_settings=merchant_conversions_v1.AttributionSettings(
attribution_lookback_window_days=45,
attribution_model=merchant_conversions_v1.AttributionSettings.AttributionModel.CROSS_CHANNEL_LAST_CLICK
)
)Configuration for a Merchant Center tag destination as a conversion source.
class MerchantCenterDestination:
destination: str # Destination identifier
attribution_settings: AttributionSettings # Attribution configuration for this destinationUsage Example:
from google.shopping import merchant_conversions_v1
# Create Merchant Center destination
mc_destination = merchant_conversions_v1.MerchantCenterDestination(
destination="INSERT",
attribution_settings=merchant_conversions_v1.AttributionSettings(
attribution_lookback_window_days=30,
attribution_model=merchant_conversions_v1.AttributionSettings.AttributionModel.CROSS_CHANNEL_LAST_CLICK
)
)Request message for creating a new conversion source.
class CreateConversionSourceRequest:
parent: str # Required. Format: accounts/{account}
conversion_source: ConversionSource # Required. The conversion source to createRequest message for updating an existing conversion source.
class UpdateConversionSourceRequest:
conversion_source: ConversionSource # Required. The conversion source to update
update_mask: field_mask_pb2.FieldMask # Required. Fields to updateUsage Example:
from google.shopping import merchant_conversions_v1
from google.protobuf import field_mask_pb2
# Update attribution settings
conversion_source = merchant_conversions_v1.ConversionSource(
name="accounts/123/conversionSources/456",
google_analytics_link=merchant_conversions_v1.GoogleAnalyticsLink(
property_id=123456789,
attribution_settings=merchant_conversions_v1.AttributionSettings(
attribution_lookback_window_days=60 # Updated value
)
)
)
update_mask = field_mask_pb2.FieldMask(
paths=["google_analytics_link.attribution_settings.attribution_lookback_window_days"]
)
request = merchant_conversions_v1.UpdateConversionSourceRequest(
conversion_source=conversion_source,
update_mask=update_mask
)Request message for deleting (archiving) a conversion source.
class DeleteConversionSourceRequest:
name: str # Required. Format: accounts/{account}/conversionSources/{conversion_source}Request message for restoring an archived conversion source.
class UndeleteConversionSourceRequest:
name: str # Required. Format: accounts/{account}/conversionSources/{conversion_source}Request message for retrieving a specific conversion source.
class GetConversionSourceRequest:
name: str # Required. Format: accounts/{account}/conversionSources/{conversion_source}Request message for listing conversion sources with pagination support.
class ListConversionSourcesRequest:
parent: str # Required. Format: accounts/{account}
page_size: int # Optional. Maximum number of results (1-1000, default 50)
page_token: str # Optional. Token for pagination
show_deleted: bool # Optional. Whether to include deleted/archived sourcesUsage Example:
from google.shopping import merchant_conversions_v1
# List with pagination and deleted sources
request = merchant_conversions_v1.ListConversionSourcesRequest(
parent="accounts/123456789",
page_size=20,
show_deleted=True # Include archived sources
)Response message for listing conversion sources.
class ListConversionSourcesResponse:
conversion_sources: List[ConversionSource] # List of conversion sources
next_page_token: str # Token for next page of results (empty if no more pages)Usage Example:
from google.shopping import merchant_conversions_v1
client = merchant_conversions_v1.ConversionSourcesServiceClient()
request = merchant_conversions_v1.ListConversionSourcesRequest(
parent="accounts/123456789",
page_size=10
)
response = client.list_conversion_sources(request=request)
# Process current page
for source in response.conversion_sources:
print(f"Name: {source.name}")
print(f"State: {source.state}")
# Check for more pages
if response.next_page_token:
print(f"More results available. Next page token: {response.next_page_token}")All message types provide runtime type checking and validation:
from google.shopping import merchant_conversions_v1
# Type validation
try:
# This will raise TypeError if property_id is not an integer
ga_link = merchant_conversions_v1.GoogleAnalyticsLink(
property_id="invalid" # Should be int
)
except TypeError as e:
print(f"Type validation failed: {e}")
# Required field validation
try:
# This will raise ValueError if required fields are missing
request = merchant_conversions_v1.CreateConversionSourceRequest()
# Missing required parent and conversion_source fields
except ValueError as e:
print(f"Required field validation failed: {e}")All message types support JSON serialization for debugging and logging:
from google.shopping import merchant_conversions_v1
import json
# Create a conversion source
conversion_source = merchant_conversions_v1.ConversionSource(
name="accounts/123/conversionSources/456",
state=merchant_conversions_v1.ConversionSource.State.ACTIVE
)
# Convert to JSON-serializable dictionary
source_dict = type(conversion_source).to_dict(conversion_source)
print(json.dumps(source_dict, indent=2))
# Create from dictionary
new_source = merchant_conversions_v1.ConversionSource(source_dict)Install with Tessl CLI
npx tessl i tessl/pypi-google-shopping-merchant-conversionsevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10