CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-google-shopping-merchant-conversions

Google Shopping Merchant Conversions API client library for managing conversion sources and tracking.

82

1.17x
Overview
Eval results
Files

data-types.mddocs/

Data Types and Messages

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.

Core Data Types

ConversionSource

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 affiliates

Usage 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")

AttributionSettings

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 type

Usage 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]
)

GoogleAnalyticsLink

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 link

Usage 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
    )
)

MerchantCenterDestination

Configuration for a Merchant Center tag destination as a conversion source.

class MerchantCenterDestination:
    destination: str  # Destination identifier
    attribution_settings: AttributionSettings  # Attribution configuration for this destination

Usage 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 Types

CreateConversionSourceRequest

Request message for creating a new conversion source.

class CreateConversionSourceRequest:
    parent: str  # Required. Format: accounts/{account}
    conversion_source: ConversionSource  # Required. The conversion source to create

UpdateConversionSourceRequest

Request 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 update

Usage 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
)

DeleteConversionSourceRequest

Request message for deleting (archiving) a conversion source.

class DeleteConversionSourceRequest:
    name: str  # Required. Format: accounts/{account}/conversionSources/{conversion_source}

UndeleteConversionSourceRequest

Request message for restoring an archived conversion source.

class UndeleteConversionSourceRequest:
    name: str  # Required. Format: accounts/{account}/conversionSources/{conversion_source}

GetConversionSourceRequest

Request message for retrieving a specific conversion source.

class GetConversionSourceRequest:
    name: str  # Required. Format: accounts/{account}/conversionSources/{conversion_source}

ListConversionSourcesRequest

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 sources

Usage 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 Types

ListConversionSourcesResponse

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}")

Type Checking and Validation

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}")

Serialization and JSON

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-conversions

docs

conversion-sources-service.md

data-types.md

index.md

resource-paths.md

tile.json