Missoula Fly Shop

Your Trusted Missoula Fly Shop

The Grizzly Hackle Fly Shop was born on the banks of Rock Creek during the summer of 1988. Founder, Jim Toth, ran the shop seasonally for two years out of an extra room in his home before moving the Grizzly Hackle to its current location in historic downtown Missoula in 1990. The shop grew quickly with a reputation for quality gear and service and some of the best guides around. Life-long friends Dan Shepherd, Steve Jensen and Ray Coleman bought the Grizzly Hackle in 2001. Then, after 15 seasons of continuing to build the Grizzly Hackle Fly Shop, the shop was purchased by Brendan Bannigan on Dec 31, 2015. Brendan spent 7 years working at the shop as the retail manager, and his friendly manner and sincere enthusiasm has been a staple and huge asset. Brendan, as sole owner, continues to enhance and improve the shop, which many say is already one of the world’s best fly shops. Certainly the Grizzly Hackle Fly Shop has been one of the premier fly shops and outfitting/guide services in the U.S.  It has continually won best Missoula fly shop from both the Missoulian and Independent newspapers.  Locals know it as a friendly shop for all types of fly fishers from beginners to seasoned veterans.  The phrase Trout Mecca Missoula was coined at the Grizzly Hackle and they truly believe that there is no better place on earth to trout fish!  Every fly fisher needs to go fly fishing in Missoula at least 1 time in their life, if not every year.

Our Philosophy

A Customer is a Lifelong Friend

At the Grizzly Hackle Fly Shop we pride ourselves in providing the best customer service around. You are our top priority. Whether it’s the finest gear, custom flies, a quality guided experience or just some simple advice, our sole purpose is to make your Montana fly fishing experience something you will remember for a lifetime. Anglers come into our fly shop as customers, but they always leave as friends who look forward to  coming back.

On the River

Our guides are true professionals who spend hundreds of days on the water each year. You won’t find any college kids or part-timers on our staff. Their dedication is your reward as they offer the best guided fly fishing trips in Montana. No detail is overlooked, from top quality boats and gear, to the knowledge and instruction that will make your day on the water a memorable experience. We are so confident in our guide staff that we offer a 100% satisfaction guarantee. If, for any reason, you are not happy with your day we will refund the price of the trip, simple as that.

Off the River

We know there is more to running a successful fly shop than rods, reels and guides. That is why we are deeply committed to helping our local community. We participate in efforts to clean up and restore area streams, donate our time at schools and work with several charitable organizations. We are fortunate to live in a beautiful, friendly place, and we are dedicated to keeping it that way.

Top
[gravityform id="6" title="false"]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gravity-theme white-labels_wrapper' id='gform_wrapper_6' > <div class='gform_heading'> <span class='gform_description'></span> </div><form method='post' enctype='multipart/form-data' id='gform_6' class='white-labels' action='/missoula-fly-shop/' > <div class='gform_body gform-body'><div id='gform_fields_6' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_6_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_above hidden_label gfield_visibility_visible" data-js-reload="field_6_5"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name' id='input_6_5'> <span id='input_6_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_6_5_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_6_5_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_6_5_6_container' class='name_last' > <input type='text' name='input_5.6' id='input_6_5_6' value='' aria-required='true' placeholder='Last Name' /> <label for='input_6_5_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></fieldset><div id="field_6_7" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_6_7"><label class='gfield_label' for='input_6_7' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_7' id='input_6_7' type='text' value='' class='large' placeholder='Email' aria-required="true" aria-invalid="false" /> </div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_6' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; jQuery("#gform_6").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_6' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='6' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_6' value='WyJbXSIsIjg3ZWFlYzMwYzIzOTIyODdiYjFkMjkxYzE4MmE1MTg2Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_6' id='gform_target_page_number_6' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_6' id='gform_source_page_number_6' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="195"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>
[gravityform id="7" title="false"]
<div class='gf_browser_unknown gform_wrapper gravity-theme white-labels_wrapper' id='gform_wrapper_7' > <div class='gform_heading'> <span class='gform_description'></span> </div><form method='post' enctype='multipart/form-data' id='gform_7' class='white-labels' action='/missoula-fly-shop/' > <div class='gform_body gform-body'><div id='gform_fields_7' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_7_1" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_1"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name' id='input_7_1'> <span id='input_7_1_3_container' class='name_first' > <input type='text' name='input_1.3' id='input_7_1_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_7_1_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_7_1_6_container' class='name_last' > <input type='text' name='input_1.6' id='input_7_1_6' value='' aria-required='true' placeholder='Last Name' /> <label for='input_7_1_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></fieldset><div id="field_7_3" class="gfield gfield--width-half gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_3"><label class='gfield_label' for='input_7_3' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_7_3' type='text' value='' class='large' placeholder='Email Address' aria-required="true" aria-invalid="false" /> </div></div><div id="field_7_5" class="gfield gfield--width-half gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_5"><label class='gfield_label' for='input_7_5' >Phone<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_5' id='input_7_5' type='text' value='' class='large' placeholder='Phone Number' aria-required="true" aria-invalid="false" /></div></div><div id="field_7_4" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_7_4"><label class='gfield_label' for='input_7_4' >Message<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_4' id='input_7_4' class='textarea medium' placeholder='Please tell us about what you&#039;re interested in!' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_7' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_7"]){return false;} window["gf_submitting_7"]=true; jQuery("#gform_7").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_7' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='7' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_7' value='WyJbXSIsIjg3ZWFlYzMwYzIzOTIyODdiYjFkMjkxYzE4MmE1MTg2Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_7' id='gform_target_page_number_7' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_7' id='gform_source_page_number_7' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="170"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>
[gravityform id="6" title="false"]
<div class='gf_browser_unknown gform_wrapper gravity-theme white-labels_wrapper' id='gform_wrapper_6' > <div class='gform_heading'> <span class='gform_description'></span> </div><form method='post' enctype='multipart/form-data' id='gform_6' class='white-labels' action='/missoula-fly-shop/' > <div class='gform_body gform-body'><div id='gform_fields_6' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_6_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_above hidden_label gfield_visibility_visible" data-js-reload="field_6_5"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name' id='input_6_5'> <span id='input_6_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_6_5_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_6_5_3' class='hidden_sub_label screen-reader-text'>First</label> </span> <span id='input_6_5_6_container' class='name_last' > <input type='text' name='input_5.6' id='input_6_5_6' value='' aria-required='true' placeholder='Last Name' /> <label for='input_6_5_6' class='hidden_sub_label screen-reader-text'>Last</label> </span> </div></fieldset><div id="field_6_7" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_6_7"><label class='gfield_label' for='input_6_7' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_7' id='input_6_7' type='text' value='' class='large' placeholder='Email' aria-required="true" aria-invalid="false" /> </div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_6' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_6"]){return false;} window["gf_submitting_6"]=true; jQuery("#gform_6").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_6' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='6' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_6' value='WyJbXSIsIjg3ZWFlYzMwYzIzOTIyODdiYjFkMjkxYzE4MmE1MTg2Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_6' id='gform_target_page_number_6' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_6' id='gform_source_page_number_6' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_3" name="ak_js" value="116"/><script>document.getElementById( "ak_js_3" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>