Sustainable Solutions
for the Health of the Planet
Greenfield Global produces and delivers the high-purity alcohols, specialty solvents, custom blends, bioprocessing inputs, and low-carbon fuels that keep industries moving.
Built differently from traditional ethanol producers, with multiple high-purity alcohol distilleries, global supply chain infrastructure, and deep expertise in sourcing, testing, blending, packaging, and distribution.
We support customers from early-stage innovators to leading multinational corporations and we deliver over 800 million liters annually to more than 50 countries.
Privately held for 35 over years, we have the freedom focus on long-term customer success. We are a trusted, solutions‑driven provider with the expertise and operational discipline to execute - where and when our customers need us.
We advance solutions that support human health, industrial progress, and the transition to a more sustainable future.
Why Work With Us
Uncompromising quality. Every batch, every time.
Uncompromising quality. Every batch, every time.
- Facilities that are certified to ISO 9001/14001/45001, EXCiPACT, USP/EP/JP/ACS/FCC, FSSC 22000, and GMP
- Products available that are certified Organic, Kosher and Non-GMO Project Verified, and meet USP/EP/JP/ACS/FCC standards
- White rooms, cleanrooms, and purified water systems plus dedicated equipment
- End-to-end testing and traceability with in-house testing for faster turnaround times and no third-party management
- Advanced analytics capabilities and equipment to minimize operational quality risk
- Reliability validated through thousands of successful customer and regulatory audits
What you need, when and where you need it
What you need, when and where you need it
- Five distilleries, four manufacturing and packaging facilities, and nine bulk distribution locations
- Global supply chain network serving 50+ countries with consistently reliable delivery, powered by 60 logistics partners worldwide
- Flexible packaging that scales with you - from liters to rail cars
Decades of partnership, not short term priorities
Decades of partnership, not short term priorities
- Deep expertise in complex, highly regulated materials and regulatory compliance
- 96% global customer retention—customers stay because we deliver
- World class customer Net Promoter Score of 83
- As a privately held company, we invest in your success for decades, not quarters
Error executing template "/Designs/Swift/Grid/Page/RowTemplates/2Columns.cshtml" System.InvalidOperationException: A prior operation on this collection was interrupted by an exception. Collection's state is no longer trusted. at System.Runtime.CompilerServices.ConditionalWeakTable`2.Container.VerifyIntegrity() at System.Runtime.CompilerServices.ConditionalWeakTable`2.Container.CreateEntryNoResize(TKey key, TValue value) at System.Runtime.CompilerServices.ConditionalWeakTable`2.Add(TKey key, TValue value) at Microsoft.AspNetCore.Razor.Language.Syntax.InternalSyntax.MarkupTextLiteralSyntax.SetAnnotations(SyntaxAnnotation[] annotations) at Microsoft.AspNetCore.Razor.Language.Legacy.TokenizerBackedParser`1.GetNodeWithSpanContext[TNode](TNode node) at Microsoft.AspNetCore.Razor.Language.Legacy.HtmlMarkupParser.ParseRazorCommentWithLeadingAndTrailingWhitespace(SyntaxListBuilder`1& builder) at Microsoft.AspNetCore.Razor.Language.Legacy.HtmlMarkupParser.ParseDocument() at Microsoft.AspNetCore.Razor.Language.Legacy.RazorParser.Parse(RazorSourceDocument source) at Microsoft.AspNetCore.Razor.Language.DefaultRazorParsingPhase.ExecuteCore(RazorCodeDocument codeDocument) at Microsoft.AspNetCore.Razor.Language.DefaultRazorEngine.Process(RazorCodeDocument document) at Microsoft.AspNetCore.Razor.Language.RazorTemplateEngine.GenerateCode(RazorCodeDocument codeDocument) at RazorEngine.Compilation.CompilerServiceBase.GenerateCodeFile(RazorTemplateEngine templateEngine, RazorCodeDocument document) at RazorEngine.Compilation.CompilerServiceBase.GetGeneratorResult(IEnumerable`1 namespaces, TypeContext context) at RazorEngine.Compilation.CompilerServiceBase.GetCodeCompileUnit(TypeContext context) at Dynamicweb.Rendering.Compatibility.RoslynCompilerServiceBase.CompileType(TypeContext context) at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource razorTemplate, Type modelType) at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType) at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType) at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String templateSource, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @*THERE ARE CUSTOM CHANGES IN THIS TEMPLATE*@ 2 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 3 4 @{ 5 string sectionClass = "py-3"; 6 string spaceBetweenRows = Model.Item.GetRawValueString("SpaceBetweenRows", "spacing"); 7 string spaceBetweenRowsMobile = Model.Item.GetRawValueString("SpaceBetweenRowsMobile", "auto"); 8 9 @*Custom START*@ 10 int splitBg = Model.Item.GetInt32("SplitBackground"); 11 @*Custom END*@ 12 13 //Row spacing mobile auto 14 if (spaceBetweenRowsMobile == "auto") 15 { 16 spaceBetweenRowsMobile = spaceBetweenRows; 17 } 18 19 //Row spacing mobile 20 switch (spaceBetweenRowsMobile) 21 { 22 case "none": //No spacing 23 sectionClass = "py-0"; 24 break; 25 case "spacing": //Small spacing top and bottom 26 sectionClass = "py-3"; 27 break; 28 case "spacing-small-top": //Small spacing top 29 sectionClass = "pt-3"; 30 break; 31 case "spacing-small-bottom": //Small spacing bottom 32 sectionClass = "pb-3"; 33 break; 34 case "spacing-medium": //Medium spacing top and bottom 35 sectionClass = "py-4"; 36 break; 37 case "spacing-medium-top": //Medium spacing top 38 sectionClass = "pt-4"; 39 break; 40 case "spacing-medium-bottom": //Medium spacing bottom 41 sectionClass = "pb-4"; 42 break; 43 case "spacing-large": //Large spacing top and bottom 44 sectionClass = "py-5"; 45 break; 46 case "spacing-top": //Large spacing top 47 sectionClass = "pt-5"; 48 break; 49 case "spacing-bottom": //Large spacing bottom 50 sectionClass = "pb-5"; 51 break; 52 } 53 54 //Row spacing dekstop 55 switch (spaceBetweenRows) 56 { 57 case "none": //No spacing 58 sectionClass += " py-lg-0"; 59 break; 60 case "spacing": //Small spacing top and bottom 61 sectionClass += " py-lg-3"; 62 break; 63 case "spacing-small-top": //Small spacing top 64 sectionClass += " pt-lg-3 pb-lg-0"; 65 break; 66 case "spacing-small-bottom": //Small spacing bottom 67 sectionClass += " pb-lg-3 pt-lg-0"; 68 break; 69 case "spacing-medium": //Medium spacing top and bottom 70 sectionClass += " py-lg-5"; 71 break; 72 case "spacing-medium-top": //Medium spacing top 73 sectionClass += " pt-lg-5 pb-lg-0"; 74 break; 75 case "spacing-medium-bottom": //Medium spacing bottom 76 sectionClass += " pb-lg-5 pt-lg-0"; 77 break; 78 case "spacing-large": //Large spacing top and bottom 79 sectionClass += " py-lg-6"; 80 break; 81 case "spacing-top": //Large spacing top 82 sectionClass += " pt-lg-6 pb-lg-0"; 83 break; 84 case "spacing-bottom": //Large spacing bottom 85 sectionClass += " pb-lg-6 pt-lg-0"; 86 break; 87 } 88 89 string containerClass = "container-xl"; 90 string width = Model.Item.GetRawValueString("Width", "container-xl"); 91 if (width == "none") 92 { 93 containerClass = "container-fluid px-0"; 94 } 95 if (width == "stretch") 96 { 97 containerClass = "container-fluid"; 98 } 99 if (width == "compressed") 100 { 101 containerClass = " container-compressed"; 102 } 103 104 /*Custom START*/ 105 if (width == "article") 106 { 107 containerClass = "custom-container"; 108 } 109 /*Custom END*/ 110 111 string rowClass = string.Empty; 112 string spaceBetweenColumns = Model.Item.GetRawValueString("SpaceBetweenColumns", string.Empty).ToLower(); 113 string spaceBetweenColumnsMobile = Model.Item.GetRawValueString("SpaceBetweenColumnsMobile", string.Empty).ToLower(); 114 //Mobile 115 if (spaceBetweenColumnsMobile == "auto") 116 { 117 spaceBetweenColumnsMobile = spaceBetweenColumns; 118 } 119 if (spaceBetweenColumnsMobile == "stick") 120 { 121 rowClass = " gap-0"; 122 } 123 if (spaceBetweenColumnsMobile == "spacing-medium") 124 { 125 rowClass = " gap-4"; 126 } 127 if (spaceBetweenColumnsMobile == "spacing-large") 128 { 129 rowClass = " gap-5"; 130 } 131 //Desktop 132 if (spaceBetweenColumns == "stick") 133 { 134 rowClass += " gap-lg-0"; 135 } 136 if (spaceBetweenColumns == "spacing-medium") 137 { 138 rowClass += " gap-lg-4"; 139 } 140 if (spaceBetweenColumns == "spacing-large") 141 { 142 rowClass += " gap-lg-5"; 143 } 144 145 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 146 147 string animationOnScrollCol1 = Model.Item.GetRawValueString("AnimationOnScrollCol1", "no-animation"); 148 animationOnScrollCol1 = animationOnScrollCol1 != "no-animation" ? "data-aos=" + "'" + animationOnScrollCol1 + "'" : ""; 149 string animationOnScrollCol2 = Model.Item.GetRawValueString("AnimationOnScrollCol2", "no-animation"); 150 animationOnScrollCol2 = animationOnScrollCol2 != "no-animation" ? "data-aos=" + "'" + animationOnScrollCol2 + "'" : ""; 151 152 string hideOverflow = " overflow-hidden"; 153 hideOverflow = 154 animationOnScrollCol1 != "" || 155 animationOnScrollCol2 != "" 156 ? hideOverflow : ""; 157 158 Dynamicweb.Frontend.FileViewModel backgroundImage = Model.Item.GetFile("BackgroundImage"); 159 string backgroundImagePath = backgroundImage?.Path ?? string.Empty; 160 backgroundImagePath = !string.IsNullOrEmpty(backgroundImagePath) ? $"/Admin/Public/GetImage.ashx?image={backgroundImagePath}&width=2600&format=webp&compression=75" : string.Empty; 161 backgroundImagePath = Dynamicweb.Core.Encoders.HtmlEncoder.UrlPathEncode(backgroundImagePath); 162 string backgroundRepeat = Model.Item.GetRawValueString("BackgroundImageRepeat", "no-repeat"); 163 string backgroundImageSize = Model.Item.GetRawValueString("BackgroundImageSize", "initial"); 164 int xPos = backgroundImage?.FocalPositionFromLeft ?? 50; 165 int yPos = backgroundImage?.FocalPositionFromTop ?? 50; 166 string cssPosition = $"{xPos}% {yPos}%"; 167 string gradient = Model.Item.GetRawValueString("Gradient", string.Empty); 168 string gradientOpacity = Model.Item.GetRawValueString("GradientOpacity", "0.00"); 169 string gradientString = "linear-gradient(" + gradient + "deg," + "rgba(var(--swift-foreground-color-rgb)," + gradientOpacity + "), rgba(var(--swift-background-color-rgb)," + gradientOpacity + "))"; 170 string backgroundImageString = "url(" + backgroundImagePath + ")"; 171 string backgroundImagePositionString = "background-position:" + cssPosition + ";"; 172 string backgroundRepeatString = "background-repeat:" + backgroundRepeat + ";"; 173 string backgroundImageSizeString = "background-size:" + backgroundImageSize + ";"; 174 string styleString = string.Empty; 175 176 var decorations = Model.Item?.GetList("CssDecorations")?.GetRawValue().OfType<string>() ?? Enumerable.Empty<string>(); 177 var css = string.Empty; 178 var cssClasses = new List<string> { }; 179 180 foreach (var itemId in decorations) 181 { 182 var item = Dynamicweb.Content.Services.Items.GetItem("Swift_Css", itemId); 183 item.TryGetValue("Class", out object classes); 184 if (classes is null) 185 { 186 continue; 187 } 188 189 var cssString = (string)classes; 190 if (cssString.StartsWith("[")) 191 { 192 var cssArray = Dynamicweb.Core.Converter.Deserialize<string[]>(cssString); 193 cssClasses.AddRange(cssArray); 194 } 195 else 196 { 197 cssClasses.Add(cssString.Replace(",", " ")); 198 } 199 } 200 css = string.Join(" ", cssClasses).Trim(); 201 202 @* Only gradient *@ 203 204 if (!string.IsNullOrEmpty(gradient) && string.IsNullOrEmpty(backgroundImagePath) && gradientOpacity != ("0.00")) 205 { 206 styleString += "style=\"background-image:" + gradientString + ";\""; 207 } 208 209 @* Only background image *@ 210 211 else if (string.IsNullOrEmpty(gradient) && !string.IsNullOrEmpty(backgroundImagePath)) 212 { 213 styleString += "style=\"background-image:" + backgroundImageString + "; " + backgroundImagePositionString + backgroundRepeatString + backgroundImageSizeString + "\""; 214 } 215 216 @* Gradient and background image *@ 217 218 else if (!string.IsNullOrEmpty(gradient) && !string.IsNullOrEmpty(backgroundImagePath)) 219 { 220 styleString += "style=\"background-image:" + gradientString + "," + backgroundImageString + ";" + backgroundImagePositionString + backgroundRepeatString + backgroundImageSizeString + "\""; 221 } 222 223 @*Custom START*@ 224 if (splitBg > 0 && splitBg <= 100) 225 { 226 styleString = "style=\"--split-bg-pct:" + splitBg + "%\""; 227 } 228 229 @*Custom END*@ 230 231 int mobileColumnSize = Dynamicweb.Core.Converter.ToInt32(Model.Item.GetRawValueString("MobileColumnBehaviour", "1")); 232 int mobileOrderFirst = Dynamicweb.Core.Converter.ToInt32(Model.Item.GetRawValueString("MobileOrderFirst", "1")); 233 234 if (Pageview.IsVisualEditorMode || !string.IsNullOrWhiteSpace(Model.Column(1).Output()) || !string.IsNullOrWhiteSpace(Model.Column(2).Output())) 235 { 236 <div class="@(sectionClass)@(theme) @(css) @(splitBg > 0 ? "split-bg" : string.Empty) item_@Model.Item.SystemName.ToLower()" @styleString data-swift-gridrow> 237 <div class="@containerClass@(hideOverflow)"> 238 <div class="grid grid-@(mobileColumnSize) grid-lg-@Model.Columns.Count()@(rowClass)"> 239 <div class="g-col @(Model.Column(1).ColumnNumber == mobileOrderFirst ? "order-first order-lg-0" : string.Empty)" data-col-size="6" @animationOnScrollCol1 style="--bs-columns:12"> 240 @Model.Column(1).Output() 241 </div> 242 <div class="g-col @(Model.Column(2).ColumnNumber == mobileOrderFirst ? "order-first order-lg-0" : string.Empty)" data-col-size="6" @animationOnScrollCol2 style="--bs-columns:12"> 243 @Model.Column(2).Output() 244 </div> 245 </div> 246 </div> 247 </div> 248 } 249 } 250
30+ years
of global leadership as an ethanol producer, manufacturer and distributor
5
industrial, beverage and fuel alcohol distilleries in Canada and the United States.
63M Gallons
(239M liters)
of high-purity alcohol produced annually
35,000+
orders shipped per year
96%
customer retention
Near Zero Energy
Built one of the first Near Zero Energy building in Ireland
Leading Sustainability Innovator
in next-generation biofuels such as aviation fuel, hydrogen and methanol for marine.