Create Your First Product Carbon Footprint (PCF)
Climatiq’s Product Carbon Footprint (PCF) feature helps automate the emissions associated with product manufacturing, use and disposal, covering material sourcing and factory production.
The PCF feature is designed for scenarios where you are manufacturing a physical product and have the following data available:
- The location of manufacturing site
- A detailed bill of materials (BOM) for the final manufactured product, including the origin of each component
- The energy uses for the manufacturing of the final product
- The year of manufacture
Your First PCF
As an example, let’s calculate a PCF for a very simple hammer, that consists of just 3 parts. The iron hammer head, the wooden handle, and a screw to connect them.
{
"product": "Hammer",
"location": "Frankfurt",
"manufacturing_year": 2025,
"manufacturing": [],
"end_of_life": {
"include_end_of_life": false
},
"components": [
{
"type": "simple",
"product": "iron",
"production_year": 2025,
"weight": {
"weight": 1.5,
"weight_unit": "kg"
},
"location": "Stockholm"
},
{
"type": "simple",
"product": "wood",
"production_year": 2025,
"weight": {
"weight": 0.5,
"weight_unit": "kg"
},
"location": "Stockholm"
},
{
"type": "simple",
"product": "screw",
"production_year": 2025,
"weight": {
"weight": 0.03,
"weight_unit": "kg"
},
"location": "Berlin"
}
]
}This PCF takes into account the production of the components that go into it, and the transportation of those components to the manufacturing site (the top level location) field.
Each of the components in the components array is automatically mapped to an emission factor from the Climatiq database, based on the product string.
Components that are mapped directly to an emission factor are called “Simple Components” and they have the field "type": "simple".
These are the most common types of components that go into a PCF.
Manufacturing
Manufacturing a hammer (or any product) is more than just getting the components to the same warehouse, you also have to assemble them. The PCF feature supports a variety of manufacturing input, but let’s look at probably the most common - electricity usage.
Your hammer-producing factory will require electricity for the machinery that assembles the hammer.
We can add these manufacturing steps in the manufacturing part of the request, so that the request ends up looking like this:
{
"product": "Hammer",
"location": "Frankfurt",
"manufacturing_year": 2025,
"manufacturing": [
{
"type": "electricity",
"amount": {
"energy": 2,
"energy_unit": "kWh"
}
}
],
"end_of_life": {
"include_end_of_life": false
},
"components": [
{
"type": "simple",
"product": "iron",
"production_year": 2025,
"weight": {
"weight": 1.5,
"weight_unit": "kg"
},
"location": "Stockholm"
},
{
"type": "simple",
"product": "wood",
"production_year": 2025,
"weight": {
"weight": 0.5,
"weight_unit": "kg"
},
"location": "Stockholm"
},
{
"type": "simple",
"product": "screw",
"production_year": 2025,
"weight": {
"weight": 0.03,
"weight_unit": "kg"
},
"location": "Berlin"
}
]
}In this request, we specify that it takes 2kWh of electricity to manufacture one hammer out of these components. Climatiq will automatically calculate the correct emissions from the manufacturing electricity based on the manufacturing site.
Climatiq supports several different ways of specifying manufacturing emissions, such as electricity, fuel use, and heat & steam. For more information, view the full API reference.
We’ve now performed a cradle-to-gate PCF, covering all the emissions related to manufacturing our hammer!
You’ll note that we supply the "include_end_of_life": false parameter. The PCF API by default
includes emissions for the end-of-life stage, meaning disposal, recycling etc, of the product.
Here we’re looking only at the production of a product, aka the cradle-to-gate boundary, you
should set include_end_of_life to false.
The Calculated PCF
The response returned by the PCF API is fairly large, and fully documented in the API reference. Here we’ll just look at some of the more important parts:
The version_id and product_id fields are the two different kinds of IDs every PCF has. The product_id describes the product, and the version_id describes the version of the PCF for a given product.
You generally use the version_id to reference a PCF - see more on our page about Managing & Editing PCFs.
"version_id": "8b1f4755-36a2-429c-b47a-5b8f4c8bc3f5",
"product_id": "8b1f4755-36a2-429c-b47a-5b8f4c8bc3f5",The weight_kg is the final weight of the product in kilograms. In our case, this is the weight of all the simple components added up.
"weight_kg": 2.03,The results are always summarized in three distinct phases. cradle_to_gate, end_of_life and use_phase.
In our cases we’re only covering cradle_to_gate, so the other two are null.
"end_of_life": null,
"use_phase": null,Next up we have a summary of the cradle to gate emissions, which returns the total CO2e for this boundary.
The total_co2e_kg here is a summation of:
- The production of all the input components
- The transportation of those components to the manufacturing site
- The CO2e from the manufacturing process.
Some data quality values are also returned. You can read more about data quality in our API reference
"cradle_to_gate": {
"total_co2e_kg": 5.70315955913,
"co2e_calculation_method": "ipcc_mixed_gwp100",
"data_quality": {
"scaled": {
"technological_representativeness_data_quality_rating": 21.4491081791,
"geographical_representativeness_data_quality_rating": 19.8636997555,
"temporal_representativeness_data_quality_rating": 5.70315955913
},
"normalized": {
"technological_representativeness_data_quality_rating": 3.76091672638,
"geographical_representativeness_data_quality_rating": 3.48292898867,
"temporal_representativeness_data_quality_rating": 1.0
}
}
},Next up, we have more details on the manufacturing process. It contains a summary of total CO2e for the final manufacturing, along with data quality values.
It also contains a breakdown field, which contains additional details about each part of the manufacturing process.
In our case we’ve only specified one element in the manufacturing array in the request, so there will only be one element in the breakdown array.
The items in the breakdown array are always returned in the same order as the request.
"manufacturing": {
"total_co2e_kg": 2.60770450233,
"data_quality": {
"scaled": {
"technological_representativeness_data_quality_rating": 5.97183289513,
"geographical_representativeness_data_quality_rating": 5.21540900467,
"temporal_representativeness_data_quality_rating": 2.60770450233
},
"normalized": {
"technological_representativeness_data_quality_rating": 2.29007270179,
"geographical_representativeness_data_quality_rating": 2.0,
"temporal_representativeness_data_quality_rating": 1.0
}
},
"breakdown": [
// This list contains a more detailed breakdown
]
},Then there’s the list of components. For simple components, each object in this array consists of an object with these two fields:
transportation, covering the transportation from the specified location on each component, to the manufacturing location specified at the top level.component, which describes the actual component. Nested underneath atcomponent.production, is the emissions related to the actual production of the component.
"components": [
{
"transportation": {
"total_co2e_kg": 0.2783469093,
"route": [
{
"type": "location",
"location": "Stockholm, Stockholm County, Sweden"
},
{
"type": "leg",
"transport_mode": "road",
"distance_km": 1455.287
},
{
"type": "location",
"location": "Frankfurt, Hesse, Germany"
}
],
"well_to_tank_co2e": 0.0635888652,
"tank_to_wheel_co2e": 0.2108580441,
"logistics_hubs_co2e": 0.0039,
// some fields omitted
},
"component": {
"type": "simple",
"product": "iron",
"metadata": null,
"weight_kg": 1.5,
"location": "Stockholm, Stockholm County, Sweden",
"location_country_code": "SE",
"production": {
"estimate": {
"co2e": 2.49,
"co2e_unit": "kg",
"co2e_calculation_method": "ar4",
"co2e_calculation_origin": "source",
"emission_factor": {
"name": "Iron",
"activity_id": "metals-type_iron",
"id": "60c07955-5df0-4af1-96cf-e9f67372c75b",
"access_type": "public",
"source": "Bafa",
"source_dataset": "Informationsblatt CO2-Faktoren v3.3",
"year": 2025,
"region": "DE",
"category": "Metals",
"source_lca_activity": "cradle_to_gate",
"data_quality_flags": [
"notable_methodological_variance"
]
},
"constituent_gases": {
"co2e_total": 2.49,
"co2e_other": null,
"co2": null,
"ch4": null,
"n2o": null
},
"activity_data": {
"activity_value": 1.5,
"activity_unit": "kg"
},
"audit_trail": "enabled"
},
"data_quality": {
"scaled": {
"technological_representativeness_data_quality_rating": 12.45,
"geographical_representativeness_data_quality_rating": 12.45,
"temporal_representativeness_data_quality_rating": 2.49
},
"normalized": {
"technological_representativeness_data_quality_rating": 5.0,
"geographical_representativeness_data_quality_rating": 5.0,
"temporal_representativeness_data_quality_rating": 1.0
}
},
"calculation_details": {
"quality_label": "accept"
},
},
"notices": [
{
"message": "Emission factor is from a different region DE due to data not being available for the requested region SE.",
"code": "emission_factor_region_fallback",
"severity": "warning"
}
],
"waste": null
}
},
]When you’re ready to dive further into PCFs you can:
- Learn how to edit & manage PCFs
- Add references to other PCFs
- View the API Reference to explore all the capabilities.