Gift Card | Keep Nature Wild

What are you looking for?

Digital Gift Card

The perfect gift every time - give them the gift of choice! Choose a gift card amount between $10 - $200 and we'll take care of the rest.

How it works:

  1. This is a digital gift card and will be delivered electronically to the email address you specify! 
  2. Enter the email you want to send the e-gift card to at checkout and the gift will be sent automatically to the recipient!
  3. Tip: Send it to yourself and print or forward it to the recipient if you want to share it with them at a later date :) 

Details:

  • Gift cards cannot be returned or exchanged
  • Discounts cannot be applied to gift cards
  • Gift cards do not expire or lose value
  • Gift Cards can be used across multiple purchases

We pick up one pound of trash for every product sold. Find out more and join a cleanup here.

Customer Reviews

Based on 4 reviews
100%
(4)
0%
(0)
0%
(0)
0%
(0)
0%
(0)
A
Amy W
Perfect gift

Love these products! Love the ability to keep nature wild!!!

S
Sarah Jolley

Awesome!

S
Sarah Bunn
Teacher Appreciation Gift and More

Impactful gift!! And of course I needed to snag a couple for myself, since I was already placing one order!! ♥️ I find myself going back to the website often, fighting with my need fo minimalize YET ready to order more.

S
Sara Gomez
Absolutely Amazing

So easy to order! My bf loved the gift and is looking forward to using.

class Campaign def initialize(condition, *qualifiers) @condition = (condition.to_s + '?').to_sym @qualifiers = PostCartAmountQualifier ? [] : [] rescue qualifiers.compact @line_item_selector = qualifiers.last unless @line_item_selector qualifiers.compact.each do |qualifier| is_multi_select = qualifier.instance_variable_get(:@conditions).is_a?(Array) if is_multi_select qualifier.instance_variable_get(:@conditions).each do |nested_q| @post_amount_qualifier = nested_q if nested_q.is_a?(PostCartAmountQualifier) @qualifiers << qualifier end else @post_amount_qualifier = qualifier if qualifier.is_a?(PostCartAmountQualifier) @qualifiers << qualifier end end if @qualifiers.empty? end def qualifies?(cart) return true if @qualifiers.empty? @unmodified_line_items = cart.line_items.map do |item| new_item = item.dup new_item.instance_variables.each do |var| val = item.instance_variable_get(var) new_item.instance_variable_set(var, val.dup) if val.respond_to?(:dup) end new_item end if @post_amount_qualifier @qualifiers.send(@condition) do |qualifier| is_selector = false if qualifier.is_a?(Selector) || qualifier.instance_variable_get(:@conditions).any? { |q| q.is_a?(Selector) } is_selector = true end rescue nil if is_selector raise "Missing line item match type" if @li_match_type.nil? cart.line_items.send(@li_match_type) { |item| qualifier.match?(item) } else qualifier.match?(cart, @line_item_selector) end end end def run_with_hooks(cart) before_run(cart) if respond_to?(:before_run) run(cart) after_run(cart) end def after_run(cart) @discount.apply_final_discount if @discount && @discount.respond_to?(:apply_final_discount) revert_changes(cart) unless @post_amount_qualifier.nil? || @post_amount_qualifier.match?(cart) end def revert_changes(cart) cart.instance_variable_set(:@line_items, @unmodified_line_items) end end class ConditionalDiscount < Campaign def initialize(condition, customer_qualifier, cart_qualifier, line_item_selector, discount, max_discounts) super(condition, customer_qualifier, cart_qualifier) @line_item_selector = line_item_selector @discount = discount @items_to_discount = max_discounts == 0 ? nil : max_discounts end def run(cart) raise "Campaign requires a discount" unless @discount return unless qualifies?(cart) applicable_items = cart.line_items.select { |item| @line_item_selector.nil? || @line_item_selector.match?(item) } applicable_items = applicable_items.sort_by { |item| item.variant.price } applicable_items.each do |item| break if @items_to_discount == 0 if (!@items_to_discount.nil? && item.quantity > @items_to_discount) discounted_items = item.split(take: @items_to_discount) @discount.apply(discounted_items) cart.line_items << discounted_items @items_to_discount = 0 else @discount.apply(item) @items_to_discount -= item.quantity if !@items_to_discount.nil? end end end end class Qualifier def partial_match(match_type, item_info, possible_matches) match_type = (match_type.to_s + '?').to_sym if item_info.kind_of?(Array) possible_matches.any? do |possibility| item_info.any? do |search| search.send(match_type, possibility) end end else possible_matches.any? do |possibility| item_info.send(match_type, possibility) end end end def compare_amounts(compare, comparison_type, compare_to) case comparison_type when :greater_than return compare > compare_to when :greater_than_or_equal return compare >= compare_to when :less_than return compare < compare_to when :less_than_or_equal return compare <= compare_to when :equal_to return compare == compare_to else raise "Invalid comparison type" end end end class CountryCodeQualifier < Qualifier def initialize(match_type, country_codes) @invert = match_type == :not_one @country_codes = country_codes.map(&:upcase) end def match?(cart, selector = nil) shipping_address = cart.shipping_address return false if shipping_address&.country_code.nil? @invert ^ @country_codes.include?(shipping_address.country_code.upcase) end end class CartAmountQualifier < Qualifier def initialize(behaviour, comparison_type, amount) @behaviour = behaviour @comparison_type = comparison_type @amount = Money.new(cents: amount * 100) end def match?(cart, selector = nil) total = cart.subtotal_price if @behaviour == :item || @behaviour == :diff_item total = cart.line_items.reduce(Money.zero) do |total, item| total + (selector&.match?(item) ? item.line_price : Money.zero) end end case @behaviour when :cart, :item compare_amounts(total, @comparison_type, @amount) when :diff_cart compare_amounts(cart.subtotal_price_was - @amount, @comparison_type, total) when :diff_item original_line_total = cart.line_items.reduce(Money.zero) do |total, item| total + (selector&.match?(item) ? item.original_line_price : Money.zero) end compare_amounts(original_line_total - @amount, @comparison_type, total) end end end class AndSelector def initialize(*conditions) @conditions = conditions.compact end def match?(item, selector = nil) @conditions.all? do |condition| if selector condition.match?(item, selector) else condition.match?(item) end end end end class Selector def partial_match(match_type, item_info, possible_matches) match_type = (match_type.to_s + '?').to_sym if item_info.kind_of?(Array) possible_matches.any? do |possibility| item_info.any? do |search| search.send(match_type, possibility) end end else possible_matches.any? do |possibility| item_info.send(match_type, possibility) end end end end class LineItemPropertiesSelector < Selector def initialize(target_properties) @target_properties = target_properties end def match?(line_item) line_item_props = line_item.properties @target_properties.all? do |key, value| next unless line_item_props.has_key?(key) true if line_item_props[key].downcase == value.downcase end end end class VariantIdSelector < Selector def initialize(match_type, variant_ids) @invert = match_type == :not_one @variant_ids = variant_ids.map { |id| id.to_i } end def match?(line_item) @invert ^ @variant_ids.include?(line_item.variant.id) end end class PercentageDiscount def initialize(percent, message) @discount = (100 - percent) / 100.0 @message = message end def apply(line_item) line_item.change_line_price(line_item.line_price * @discount, message: @message) end end CAMPAIGNS = [ ConditionalDiscount.new( :all, nil, AndSelector.new( CountryCodeQualifier.new( :is_one, ["US"] ), CartAmountQualifier.new( :cart, :greater_than_or_equal, 50 ), nil ), AndSelector.new( LineItemPropertiesSelector.new( {"_attribution" => "Rebuy Tiered Progress Bar"} ), VariantIdSelector.new( :is_one, ["37457563648191"] ), nil ), PercentageDiscount.new( 100, "Free Gift for spending 50 ".gsub("", Input.cart.presentment_currency) ), 1 ), ConditionalDiscount.new( :all, nil, AndSelector.new( CountryCodeQualifier.new( :not_one, ["US"] ), CartAmountQualifier.new( :cart, :greater_than_or_equal, 50 ), nil ), AndSelector.new( LineItemPropertiesSelector.new( {"_attribution" => "Rebuy Tiered Progress Bar"} ), VariantIdSelector.new( :is_one, ["37457563648191"] ), nil ), PercentageDiscount.new( 100, "Free Gift for spending 50 ".gsub("", Input.cart.presentment_currency) ), 1 ) ].freeze CAMPAIGNS.each do |campaign| campaign.run_with_hooks(Input.cart) end Output.cart = Input.cart